IOS images are stored in the device's flash memory. Depending on the device, you may have room for multiple images - e.g. the boot image, an archive for fallback, a version for upgrade after reload etc. An image is read into memory at boot time according to the parameters set in the config register (and sometimes a boot variable specified in the startup script if specified in the config register).
You can store as many images in flash as you have storage capacity for. Set your config register and/or boot variable to do as you wish and the image you specify will be loaded during the next reload.
For instance, a 2821 IOS image size ranges from about 39 MB (12.4) to 66 MB (15.1) and a 2821 router has somewhere between 64 and 256 MB of flash.
Hope this helps.