Two points:
1) If you are running into out of memory errors with large Bitmaps then there is the possibility of updating the manifest file with a largeHeap attribute.
That will force the device to allocate a larger memory heap space to your app and you can then in theory load larger Bitmaps.
I used such a technique
here to enable me to load larger images in a GroundOverlay.
Note that the format of the image that you load is not related to the amount of memory that the image requires once loaded into your application.
A compressed JPG will require the same amount of memory in your application as an uncompressed .bmp bitmap image file.
(Assuming resolution and color depth etc are equal).
2) You could display very high quality images in your application by turning them into a custom tile overlay and displaying these tiles using OSMDroid MapView!
You'd start with the highest resolution and quality image available and create a set of map tiles. A series of tiles for every zoom layer that you want available in the MapView.
Package the tiles as an offline tile archive and then set an OSMDroid MapView to use the offline tile archive as a tile source.
As each tile is just 256 pixels square and just a handful of tiles will be loaded at any one time you can display very large and very high quality images with no memory problems.
The MapView would enable you to pan and zoom around your image, just as you can pan and zoom around a 'normal' map.
The MapView will only zoom to discrete zoom levels - for example you can display zoom level 4 and 5 but
not zoom level 4.25, so that's a possible disadvantage.
Another disadvantage is that an offline tile archive will be quite a few MBs in size, size depending on the number of zoom levels you want to support and how much you compress the tiles.
Post again if you want more info on a custom tile layer solution.
Martin.