In Qt 4, image I/O is based on QImage, which is in the QtGui library. Since QImage is a QPaintDevice, this kind of makes sense. But image I/O in general has not much to do with the GUI. We have used Qt as an operating system abstraction layer (and more) in Into (http://intopii.com/into/) whose main application area is image processing. In a server application, we often need image I/O but no GUI. Now, we need to use 3rd party libraries for image de/encoding because using QImage would require installing X. Sometimes this is not even possible, and in most cases waste of resources.
QImage should be split into two classes. Let's call them QImageBase and QImage. All I/O should use QImageBase, which would be in the core library. Then, QImage could derive from both QPaintDevice and QImageBase, and it could be based into the GUI module.