I was recently working on a site where I wanted to use the '#states' key in a form using the Drupal 7 Form API. If you haven't come across this yet its a great way to only show a field depending on a certain set of circumstances.
How to create a simple multi-step form in Drupal 7, with forward and backwards navigation, per-step validation, and how to retain values between steps.