Sorry Kurt ma non sono d'accordo, specie sul "Dovresti fare l'escape dei caratteri" come se filter_var non lo facesse.
Ecco cosa fa filter_var: http://www.w3schools.com/php/filter_sanitize_string.asp
O sono tonto io o quello che vedo è proprio l'escape dei caratteri/tag HTML, correggimi se sbaglio.
A dirla tutto per verificare il campo email basta verificare l'esistenza MX DNS (cosa di due righe in PHP) così sei sicuro che non ti basta inserire: cacca@cacca.it per superare il controllo, quindi lasciamo stare escape e check caratteri ti basta mettere quella condizione.Se, aggiornando il campo email della vostra tabella utenti, pensate che per prevenire sql injection sia sufficiente controllare (con filter_var) che il valore dato dall'utente sia una email valida, allora vi meritate l'injection.