On peut imaginer une seule page "logique" en jouant avec des css et display:none pour n'afficher qu'une partie du formulaire à la fois et des liens qui mènent à la page suivante en bas de la page. (tu joues avec des $_GET pour savoir sur quelle "page" tu te trouves).
Bouton submit en bas de la page ou non, ça ne pose pas (trop) de problème, mais il faut bien réfléchir à l'initialisation des variables au début et aux contrôles par la suite...
J'avais fait ça en ASP ça jouait, mais il ne s'agissait que d'un gros gros form, sans histoires de session, en plus.