Sembra che tutto funzioni, ma non avendo mai utilizzato PDO, non so se manca qualcosa... Ad esempio, se elimino il blocco "catch{...} mi viene segnalato un errore di sintassi; è perchè il blocco è obbligatorio o perchè ho toppato qualche apice?
Se rimuovi catch, devi togliere anche try

Inoltre, leggevo da vari commenti qui sul forum che PDO mette al riparo automaticamente dai problemi legati all'SQL-Injection... ma in che modo? I controlli effettuati tramite mysql_real_escape_string e dall'espressione regolare per eliminare apici e altri caratteri potenzialmente dannosi nel primo codice, come sono gestiti in PDO?
Non vorrei sbagliare, ma come hai scritto non sei al sicuro da sql-injection, dovresti usare i parametri

Codice PHP:
$loginform = ($_POST["login"]); 
$passwordform = ($_POST["password"]); 
$emailform = ($_POST["email"]); 

$sth $db->prepare("SELECT * FROM utenti WHERE login = :login"); 
$sth->execute(array(":login"=>$loginform));

// In alternativa puoi usare bindValue
// $sth->bindValue(":login", $loginform [, PDO::PARAM_STR] ); [] : opzionale
// $sth->execute();