Hola:
Creo que es con explorer que si pones por ejemplo:
dato = document.createElement("input");
dato.name = "nombre" + i;
dato.value = "dato " + 1;
document.forms[0].appendChild(dato);
//...
y luego:
alert(document.forms[0]["nombre" + i]).value);
Y aparecía que ese elemento no existía..., porque tanto el name como el type solo se podía poner con setAttribute()... o sea cambiando:
dato.name = "nombre" + i;
por
dato.setAttribute("name", "nombre" + i);
Pruéba tu código con distintos navegadores (siempre es preferible por estas situaciones), y dinos si en alguno funciona bien, y en cuales mal.
Saludos