in reply to session problem
I've been using formbulder (Catalyst::Controller::FormBuilder, based on CGI::FormBuilder) and like it. CGI::FormBuilder docs do mention multi-screen forms.
But I've built a catalyst portal recently with lots of forms and never had a problem or needed multipage forms myself.
The logged in user is found ($c->user) and is automatically managed via Catalyst's authentication and session capabilities. So I always show forms prepopulated from the db keyed to the user, and then save immediately.
I don't use the session manually myself, though you could persist stash in $c->flash. I think maybe you are making things too complicated, maybe using the same form field names in different forms. That's bad!
Try FormBuilder. You can make one definition for each form, or if you are dying to make multi-screen forms then make a big definition and then I guess you will want to change which fields are hidden depending on theform page number. Hope this helps.