Hola masterjail:
Estás usando la manera indexada de usar las colecciones de objetos (por ejemplo los campos de los formularios)...
También existe la forma asociativa, poniendo entre corchetes, en vez del índice, la cadena que se corresponde con el atributo name del campo...
Tocando la línea de tu código, sería:
for(i = 0;i < n - 1;i++){
if (document.forms[0][campos_no_nulos[i]]["value"] == "") {llenados = false}};
Habrás visto la forma de indicar el atributo value, que puse deliberadamente, para que veas las posibilidades de los arrays asociativos.
Bueno, por último te voy a simplificar 2 líneas que tienes:
if (llenados) {document.forms[0].accion.disabled = false};
if (!llenados) {document.forms[0].accion.disabled = true};
lo puedes poner:
document.forms[0].accion.disabled = !llenados;
Espero que te sirva.
Saludos