Probabilmente c'è anche il guaio che
var inputs = document.getElementsByTagName("*");

è stato dichiarato et valorizzato a zonzo per lo script: gli elementi devono prima esistere (nel tempo) perché un metodo li possa trovare.
Vedi com' ho fatto qua sotto: una funzione attende il comando dal body onload che scatterà al termine del caricamento della pagina.
codice:
<html><head>
<script type="text/javascript">

var eles = [];
var inputs;


function esegui(){

 inputs = document.getElementsByTagName("*");

        for(var i = 0; i < inputs.length; i++) {

            document.getElementById('scrittoio').innerHTML = 
            document.getElementById('scrittoio').innerHTML + ' ' + inputs[i].name
        }
 }

</script>
</head>
<body onload="esegui();">

<input type="text" name="name1[]" id="id1[]" />
<input type="text" name="name2[]" id="id2[]" /> 
<textarea name="name3" id="id3[]">text3</textarea>
<input type="radio" name="radio1" id="radio1" />

<div id="scrittoio"></div>

</body></html>
C'è anche l' impiego di innerHTML in alternativa al document.write per le ragioni che già ti sono state dette dal Mod. .
Ti stamperà ancora degli undefined dacché ("*") mette in lista anche quegli Elementi che il NAME non l' hanno.

Per il resto, posso pure concordare che questo è un forum un po' allo Stronsio, e difatti lo frequento saltuariamente, ma ti assicuro che il "cavicchiandrea" rimane una persona gradevolissima ed un costante seguitore .. segugio .. seguente .... che c'è sempre insomma.