Vero, avevo dimenticato l'opzione!!
Prova questo, dovrebbe andare...
Codice PHP:
<?php
function showform($errore)
{
echo $errore.'
<form name="input" action="'.$_SERVER['PHP_SELF'].'" method="post">
Username: <input type="text" name="user">
Password: <input type="password" name="pwd">
<input type="submit" value="Submit">
</form>';
}
/*verifico se le 2 variabili sono impostate, se non lo sono vuol dire ho aperto ora la pagina
perciò vado all'else relativo, aprendo il form senza errori con showform("")*/
if (isset($_POST['user']) or isset($_POST['pwd'])){
/* se arrivo qua vuol dire che ho clikkato su Submit perciò le variabili sono state create*/
if ($_POST['pwd']=="" && $_POST['user']=="") //se entrembe sono vuote
showform("Campo user e password vuoti!!");
elseif ($_POST['user']=="") //altrimenti se manca solo il nome utente
showform("Campo utente vuoto!!");
elseif ($_POST['pwd']=="") //altrimenti ancora se manca solo la password
showform("Campo password vuoto!!");
else //se arrivo quà è tutto ok perciò proseguo alla verifica
{
//codice verifica login
}
} else {
showform("");
}
?>
l'ho testato... è ok 
Ho commentato il codice per chiarezza, spero ti sia utile.
Ciao.