Image memory on micro controller
Your approach is right if you want it to be as generic as possible. If you don't know anything about the image someone want to load, you have to assume worst case. Image compression can not save you either, because it's theoretically impossible to compress every image.

For everything else you have to set limits. You can for example decide that you're OK with a gray image, in which case you only need 4 bits per pixel. You can decide to only allow 16 kiB large JPEG images with a fixed set of supported parameters. JPEG isn't that heavy, and was designed to be relatively easy to implement by microcontrollers. There are good external tools that can shrink images down to a given file size. For less compression and complexity decide on a different format, maybe GIF or PNG. This of course requires more room for decompression.

Then again, I²C and SPI flash memory is cheap and small.