Yo lo probaria con las cookies:
Código PHP:
setcookie('caducidad','hola',time()+43200); //Time in seconds 43200 es igual a 12 Horas.
$key = FilterText($_GET['key']);
$check = mysql_query("SELECT * FROM forgot_password WHERE token='$key'");
$datos = mysql_fetch_assoc($check);
if(!isset( $_COOKIE['caducidad'] ){
//El código caduco
} else {
//el código no caduco
}
Edito: esto no compararia con la fecha de la BBDD...