Three Step form: There are a couple of ways. I have seen on google to make a multi-step form using CJuiTabs, or CJuiAccordian. This would send all information in one ‘submit’.
If it is A LOT of information in each step, you could set ‘allow null’ for the db fields. Set rules for required as needed, and use ‘on’=>scenario option of the rules. Step1 scenario= insert/update. Step2 scenario=step2, etc.
This may be cryptic, but it’s not short answer and google has a lot of information that I have seen on this.