El problema básico es que estás ejecutando un onclick sobre un input submit, y tras el click el html hace un return de la acción natural del submit, es decir, procesa el form.
Alternativas, llamá la función con el evento onsubmit y return, en el form
<form action="#" onsubmit="return validate();">
y por cada condiciójn no válida, devolvés false
Código:
function validate() {
var user = document.Autentificacion.Nombre.value;
var pass = document.Autentificacion.Password.value;
if (user.length == 0 && pass.length == 0) {
document.getElementById("Estado").innerHTML = "Usuario y Contraseña Requerida";
return false; }
else if (user.length == 0) {
document.getElementById("Estado").innerHTML = "Usuario Requerido"; return false;}
else if (pass.length == 0) {
document.getElementById("Estado").innerHTML = "Contraseña Requerida"; return false;}
}
si pasa la validación, el formulario sigue su curso y se envía
En otros casos, en los que no estás procensando un form, sino simplemente haciendo una validación. usás simplemente un input type button con onclick="funcion();"
Claro, esto es siempre y cuando trabajes dentro de un form.
SAludos