El proyecto Imagemagick tiene utilidades para identificar la imagen y hay una capa Java para ImageMagick llama JMagick que creo que es posible que desee considerar en lugar de reinventar la rueda:
http://www.jmagick.org
estoy usando ImageMagick todo el tiempo, incluyendo su función desde la línea de comandos "identificar" y nunca fallado una vez para identificar una imagen.
Ya en los días en que necesitaba absolutamente esa característica y JMagick aún no existía, solía usar Runtime.exec()
ImageMagick identify
comando de Java y funcionó a la perfección.
Hoy en día que existe JMagick esto probablemente ya no sea necesario (pero aún no lo he probado con JMagick).
Nota que da mucho más que sólo el formato, por ejemplo:
$ identify tmp3.jpg
tmp3.jpg JPEG 1680x1050 1680x1050+0+0 DirectClass 8-bit 293.582kb
$ identify tmp.png
tmp.png PNG 1012x900 1012x900+0+0 DirectClass 8-bit 475.119kb
usando 'Tal vez ImageIcon.getIconWidth()' directamente también funcionaría? Al menos devuelve '-1' si la imagen no se cargó correctamente. – Pooven