Используйте атрибут accept тега input. Таким образом, чтобы принимать только PNG, JPEG и GIF, вы можете использовать следующий код:
<input type="file" name="myImage" accept="image/x-png,image/gif,image/jpeg" />
Или просто:
<input type="file" name="myImage" accept="image/*" />
Обратите внимание, что это только дает подсказку браузеру относительно того, какие типы файлов отображать пользователю, но это можно легко обойти, поэтому вы всегда должны проверять загруженный файл на сервере.
Он должен работать в IE 10+, Chrome, Firefox, Safari 6+, Opera 15+, но поддержка очень слабая на мобильных устройствах (по состоянию на 2015 г.), и в некоторых отчетах это может фактически помешать некоторым мобильным браузерам загружать что-либо вообще, поэтому не забудьте проверить свои целевые платформы хорошо.
Подробную поддержку браузера см. По адресу http://caniuse.com/#feat=input-file-accept.