a) You can't get ISE to automatically preconfigure your onboard SRAM - but you can of course manually make your design initialize it at startup (although this will require the data to be present somewhere else in the system, which basically defeats the purpose).
b) Create a blockram, and assign a .coe
file with the desired contents to it, or use initialization attributes to describe the contents. You can read more about this for instance in Chapter 4 of the Spartan 3 user guide (UG331). Of course, with your size of ROM, that's going to be a bit difficult.
c) Other ideas could be to use a SPI FLASH chip (or similar), implement a small serial receiver design in the FPGA, and then load your FLASH chip contents from for instance HyperTerminal. Since it's a FLASH chip, you'll only have to do this once, and once it's done, you can remove the serial receiver design, and load your final design instead.
SPI FLASHes are quite cheap and easy to work with, but it also depends on how fast you need to access the contents. As it's serial, you wont be getting your datawords at 50MHz for instance (as that'd require your SPI interface to run at at least 800 MHz, which I'm reluctant to think is possible in a Spartan3). Parallel FLASH chips are out there also, but I'll admit that I don't have much experience with those.
An example of a SPI FLASH could be one of Atmels Dataflash chips.
In many cases you can also use the FLASH device that you store the FPGA bitstream in to store extra user data. Have a look at XAPP694 to see an example of how this is done.
The retro-way of doing this is to use a dual-inline EEPROM (or similar) and an EEPROM burner. Program the chip from your computer, and then mount it in your design.