Puoi fare cosi. E' anche possibile farlo con il DOM.

codice:
<?php 

if (isset($_POST)) {
 //print_r($_POST);
 //------- Valori delle variabili pippo
 if (isset($_POST['pippo'])) {
  $arrPippo = $_POST['pippo'];
  foreach($arrPippo as $key => $value) {
   print "indice $key - valore immesso $value
";
  } //  foreach($arrPippo as $value)
 } // if (isset($_POST['pippo']) )
} // if (isset($_POST))

 ?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script language="JavaScript" type="text/javascript">
<!--
indexVar = 0;

function addField(){
 //--------- Salvo i valori già immessi
 var savPip = new Array();
 var i = 0;
 for (i=0;i<indexVar-1;i++) {
  varName   = 'pippo['+i+']';
  savPip[i] = document.getElementById(varName).value;
 } // for (i=0;i<indexVar-1;i++)
 
 //--------- Assegno un nuovo campo
 newVar = '<input type="text" id="pippo['+indexVar+']" name="pippo['+indexVar+']" size="20" maxlength="50" />
';
 document.getElementById('divForm').innerHTML += newVar;
 
 //--------- Ripristino i valori
 for (i=0;i<indexVar-1;i++) {
  varName   = 'pippo['+i+']';
  document.getElementById(varName).value = savPip[i]
 } //  for (i=0;i<indexVar-1;i++)
 
 indexVar++;
}
//-->
</script>

</head>
<body>

<form action="test2207.php" method="post">
 <div id="divForm">

 </div>
 <input type="submit" name="invia"  value="Invia"/>
</form>

<input type="button" value="AddField" onclick="addField()" />
</body>
</html>