Hola:
Hay algunas reglas para los formularios y es siempre enviarlos con botones submit... el método submit reservarlo para cosas menos importantes como vistas previas. Así que en los códigos que he visto, aconsejo cambiar las líneas que ponen submit() por return true (incluso supongo que podrían obviarse esos "elses"...
Otra regla es validar en el evento submit, y también aconsejo pasar el propio formulario como parámetro... en resumen:
<form onsubmir="return validar(this)" ...
y en la función validar:
function validar(f) {
with (f) {
Ok = elemento1.value != "" || elemento2.value != "";
}
if (!Ok) alert("fallo...")
return Ok;
}
La idea es que la función validar devuelva true/false... y false anula el envío.
Sobre el problema está que el onblur del campo password siempre se vuelve a "usuario"... creo que ese cambio deberías condicionarlo...
<input type="password" name="password" id="password" onfocus="limpiar('password')" onblur="
if (this.value == '') cambiar('password','password')" value="password" size="10" maxlength="20" />
Hay otras cosillas que mirar, pero espero que esto resuelva la pregunta.
Saludos