Может тогда проще
$whitelist = array(".jpg", ".jpeg", ".png"); //и так далее...
foreach ($whitelist as $item)
if(!preg_match("/$item\$/i", $_FILES['somename']['name'])) exit;
Ваш код всё равно не пропустит истинный png, gif, у них $_FILES['somename']['name'] будет другой.
Кроме того $_FILES['somename']['name'] можно отправить через header вообще любой - не важно какой у файла.
Настоящую картинку можно проверить только с помощью getimagesize(), но и расширения проверять необходимо, потому как если по mime-типу картинка будет картинкой, и у неё будет всё что нужно иметь картинке, а в EXIF'e будет PHP код, то он выполнится. С ошибками, но выполнится.