Можно ли на уровне apache или php запретить upload любых не картинок?
Единственный 100% способ, это делать ресайз картинки из исходного размера в исходный, убирая из нее всю «мета» информацию, а лучше меняя даже формат. Чтобы не заливали bmp/tiff :)

Я положу в jpg-meta "Creator="<? exec('rm -rf ../'); ?> и это будет нормальная картинка, которая пройдет все ваши фильтры…
А потом через дыру в инклудах каких-нить приинклудю эту картинку. И мне не критично — какое у нее будет расширение, как ее переименовали и какие у нее права. Достаточно только на чтение.
это скорее в сторону просмотра mime информации и если нет сигнатур jpeg/gif/tiff/png/etc — блокировать.
Я бы попробовал получать от клиента первые апур килобайт файла. проверять есть ли там нужная сигнатура и в зависимости от того, или получать весь файл или прощаться с пользователем.
банально по тому что мне никто не запрещает переименовать exe -> jpeg и попробовать подсунуть это загрузчику и использовать потом ссылку для распространения всякого шлака, например