1) controlla il mime type oltre che l'estensione...

$visualizzabili = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
if(!in_array($_FILES['userfile']['type'], $visualizzabili))
//errore

2) getimagesize

3) $_FILES['userfile']['size']


http://it.php.net/features.file-upload