Vediamo se ho capito bene.
Ti posto un esempio e poi tu lo personalizzi secondo le tue esigenze.
Tutto ciò che segue va dentro la stessa pagina di nome comevuoitu.htm

codice:
<html><head>
<title>nome pagina</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
//  ------ check form ------
function checkData() {
	var f1 = document.forms[0];
	var wm = "Caro visitatore,\nriempi i campi con i seguenti dati:\n\r\n";
	var noerror = 1;

	// --- entered_login ---
	var t1 = f1.entered_login;
	if (t1.value == "" || t1.value == " ") {
		wm += "Nome utente\r\n";
		noerror = 0;
	}

	// --- entered_password ---
	var t1 = f1.entered_password;
	if (t1.value == "" || t1.value == " ") {
		wm += "Password\r\n";
		noerror = 0;
	}

	// --- check if errors occurred ---
	if (noerror == 0) {
		alert(wm);
		return false;
	}
	else return true;
}
//-->
</SCRIPT>

</head>

<body><center>
<form action='/persorso/pagina_che_riceve_i_dati.php' METHOD="post" onSubmit="return checkData()">
Nome utente: 
<INPUT TYPE="text" NAME="entered_login" STYLE="font-size: 9pt;" TABINDEX="1">



Password: 
<INPUT TYPE="password" NAME="entered_password" STYLE="font-size: 9pt;" TABINDEX="1">


<INPUT TYPE=submit value="Entra &gt;&gt;&gt;" TABINDEX="1">
</form>
</center>

<SCRIPT LANGUAGE="JavaScript">
<!--
document.forms[0].entered_login.select();
document.forms[0].entered_login.focus();
//-->
</SCRIPT>
</body></html>
In pratica: la pagina invia i dati a se stessa, controlla che le caselle siano state riempite e in caso di errori apre un alert (ma puoi sostituirlo con una popup) in cui specifica l'errore.
Se i campi sono stati riempiti i dati vengono inviati alla pagina /persorso/pagina_che_riceve_i_dati.php per essere controllati-salvati.
Non dovresti avere grosse difficoltà a personalizzarlo se hai capito come funziona.
Se hai ancora problemi fai un fischio qui.

Lo script DEVE essere perfezionato perché come vedi accetta un nome utente costituito da 2 o più spazi e una password costituita da 2 o più spazi. Non so se in javascript esiste una funzione tipo trim del php che elimina in una stringa gli spazi iniziali e finali.
Tale funzione andrebbe applicata a t1 prima del controllo
codice:
if (t1.value == "" || t1.value == " ")
Ciao