Allora puoi provare così:

codice:
<script type="text/javascript">
   function visualizza(numero) {
      stringa = "";
      for (i=1;i<=numero;i++) {
         if (i==1) {
            stringa += "<input type='text' name='inp_"+i+"'/>";
         } else {
            stringa += "
<input type='text' name='inp_"+i+"'/>";
         }
      }
      document.getElementById('div_1').innerHTML = stringa;
   }
</script>

<form>
   <div>
      <select onchange="visualizza(this.value)">
         <option value="0">Scegli quanti campi visualizzare</option>
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
         <option value="6">6</option>
         <option value="7">7</option>
         <option value="8">8</option>
         <option value="9">9</option>
         <option value="10">10</option>
      </select>
   </div>
   <div id="div_1">
   </div>
</form>
In modo che nell'unica div vengano inseriti solo i campi necessari. Come vedi viene costruita la variabile stringa accodando tutti i campi necessari e poi alla fine la stringa viene inserita nella div col solito innerHTML.

La if serve a differenziare il primo campo che non è preceduto da
da quelli successivi.

Ho inserito anche il name nei campi in modo che tu possa poi gestirli nel pgm ricevente, i nomi saranno inp_1, inp_2 ecc... ma puoi ovviamente cambiarli come preferisci.

Ciao