...per "passare" i dati da un form all'altro ci sono vari modi... sicuramente puoi creare dei campi "hidden" come dici.

Per "creare" il form devi effettivamente fare i vari "echo" (o comunque stampare l'HTML: non serve per forza un "echo" per ogni riga, ovviamente e inoltre puoi anche inserire il codice in-linea chiudendo i tag PHP).

Per caricare i form successivi dentro il div devi impostare la pagina chiamata in modo che ricrei la struttura della pagina (se non usi i frame, come mi pare di capire).

Es.:

Codice PHP:
// FORM1
<form ... >
  <
input type="text" name="username"/>
</
form
Codice PHP:
// FORM2
<?php
$form1 
base64_encode(serialize($_POST));
?>
<form ... >
  <input type="text" name="address"/>
  <input type="hidden" name="form1" value="<?php =$form1 ?>"/>
</form>