Hola:
El foco también puede recibirlo un botón, un select, un radio...
Más o menos podría ser:
f = focument.forms.formulario1;
i = 0;
buscando = true
while (i < f.elements.length && buscando) {
buscando = (buscando && (!f.elements[i].disabled || !f.elements[i].readOnly));
i ++;
}
if (!buscando) f.elements[--i].focus();
Lo puse "a capella" así que puede tener errores... pruébalo y si hace falta lo retocamos.
Saludos