ciao addictedToPhp
come da documentazione la funzione session_start va chiamata prima di ogni output, così come la funzione header, quindi la parte di codice che si occupa di verificare se l'utente è già loggato o ha già inviato la post con user e password andrebbe messa in cima al codice, prima dell'html, la form può rimanere dov'è senza necessità di stare dentro al blocco else, perchè in ogni caso se l'utente è già autenticato verrà reindirizzato altrimenti visualizzerà la form.
Per filtrare i parametri della query è più indicato utilizzare mysql_real_escape_string().