No tiene mucho sentido que compruebes en las dos tablas. La temporal deberías limpiarla cada cierto tiempo, aunque sea cada dos o tres meses. Piensa que si un usuario borra, olvida o simplemente pasa del mail que recibe en primera instancia, su registro temporal seguirá ahí y por tanto no podrá usar la misma cuenta de mail. Ya cuesta que la gente se registre, como para poner pegas evitables

.
Te cuento cómo lo manejo yo, a grandes rasgos:
- tengo dos tablas, (además de otras para temas complementarios del registro), una con datos temporales (p.ej. tbtemp) y la otra definitiva (p.ej. tbdef).
- cuando el usuario se registra miro que el mail no está en tbdef.
- si está le recuerdo que es un despistado (con opción a enviarle la contraseña y tal) y sino, seguimos.
- se insertan sus datos en tbtemp y se generan ciertos identificadores para el usuario. Se le envía mail con url a pinchar que lleva esos datos únicos y no sensibles (evidentemente no le meto ahí cosas como login, pwd y demás)
- dicha url lleva a un asp que chequea en tbtemp la corrección de los datos recibidos por querystring, no sea el caso que algún gracioso se pusiera a intentar reventar el sistema de registro por ahí.
- si todo está ok se insertan sus datos en tbdef.
Como ves el método es sencillo. La tabla importante no es tbtemp sino tbdef en cuanto a validación de mail al intentar registrarse. A partir de ahí ya viene la parte de cookies, panel de control y resto.