Non capisco come mai se nel campo scrivo &lt; il form si invia, se invece scrivo & lt; il form torna indietro con l'alert "I caratteri < > \ non sono ammessi".

Ma il codice alert non controlla quei caratteri VVoVe:
Codice PHP:
//Alert "caratteri non ammessi"  
if ($nome.$citta.$suoemail.$messaggio){
if (
ereg("[< > \\]+",$nome.$citta.$suoemail.$messaggio)){
$errore .= "I caratteri  < > \\ non sono ammessi";
 }

Questo riceve i dati dal form:
Codice PHP:
$nome htmlentities(stripslashes(trim($_POST['nome'])));