Если значки Gravatar имеют точные типы MIME, назначенные сервером, к которому вы обращаетесь, просто проверьте это. Должно быть image/jpeg
для JPEG и image/png
для PNG.
В противном случае ...
http://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
Файл PNG начинается с 8-байтовой подписи. Значения шестнадцатеричных байтов равны 89 50 4E 47 0D 0A 1A 0A; десятичные значения 137 80 78 71 13 10 26 10.
Так что просто проверьте восемь байтов в начале файла; если это PNG, он будет иметь указанные значения в этих байтах, а если нет, то не будет. Просто скачайте файл, возможно, временно сохраните его где-нибудь (что не должно быть слишком сложно, учитывая, что он не должен быть слишком большим), и обработайте его по-разному в зависимости от содержимого заголовка. Вы всегда можете изменить расширение файла и затем использовать графическую библиотеку PHP, если вы сначала сохранили его как неправильный тип. (Или вам не разрешено это делать?)
Как примечание, мой любимый бит о заголовке PNG:
50 4E 47 В ASCII - буквы PNG, позволяющие пользователю легко определить формат, если он просматривается в текстовом редакторе.