dando un'occhiata al codice non riesco a trovare errori, prova a fare un pò di debug e vedi dov'è il punto in cui lo script va "i crisi"

come mai a volte usi empty() e altre array_key_exists() ? prova usando sempre empty(), oppure prova a verificare l'esistenza del dato semplicemente con:

Codice PHP:
# fai un minimo di controllo sui dati che ricevi in input
$nome stripslashes(trim($_GET['nome'])); 
if (
$nome == "" && ...) 


edit: metti anche un error_reporting(E_ALL); all'inizio dello script