Complex field availability

Complex field availability

I use a picklist to manage the "stage" in a custom module.

I need to constrain the list of available selections based on the current selection.
Example:

Pick list is A, B, C, D, E, F, G

If current value is A, then only show B and C.

If current value is C then show A, B, D, E, F, 

Only show G if current value is C, D, E, F

It would be acceptable to use checkboxes for this, but it's unclear to me that layout rules can support this.

Ideas? Client script onLoad?