Grayed out and disabled is best if the form is dynamic. The graying indicates to the user the field is disabled and not being able to tab into it doesn't confuse them over why they can't type anything.
It's best to not dynamically change the form too much on the user. Hiding/showing areas is fine as the user selects something (for example if they check a box then show them a new area to fill in additional data like an address). This can get a little too overwhelming (like showing entire sections of forms) and especially confusing if you do things like showing things above where they currently are based on selections.
In the end, it's best to turn to your user base for the answer. Get them to test out whatever idea you're trying out. Consider it like a test audience for your form. If they like it, you nailed it and move on. If not, get feedback from them on what they didn't like and (more importantly) why. Then reiterate, improve and try again.