WenWhen asking a broad question, it is helpful to include some details. Like how much memory you need and why you think you need it.
I once specified a processor at 2 KB program space, 64 bytes RAM and 1 KIPS. The engineer asked, MIPS"MIPS?", and I explained thousands per second. He replied, they"They don't come that slowslow". At the end of the project, a huge UI was added and memory got tight... but it still fit with no problem.
So, consider being more thoughtful about the resources being used.
To answer the question:
The Arduino does not provide a convenient bus to fetch memory over. So, there is no way to plug in a chip to get more memory.
The Arduino has SPI, so an SD card can be accessed. Any code on the SD card would need to be loaded into executable memory. This is complicated and not for beginners...
As suggested, tighten up you code. This is probably a good way to learn.
Move to a larger Arduino.
There are different Arduino processors. Some in the ACR line, others in the ARM line. Going to a different device in the same family is a relatively modest change and can provide up to 368 Bytes of progamprogram FLASH. But these are not Arduino boards exactly.
The Arduino ARM based devices are very differntdifferent and use different libraries.
Check out the Arduino Mega 2560 it is very similar to the Uno, has a similar footprint, code should port relatively easily and is inexpensive.
There are also larger devices in the AVR family.
Note, the AVR32 is a different processor and the peripherals are enough different that it is a different device.
If you want to get into very large programs (gigabytes of memory) check out the Beagleboard. It has a full linux, with virtual memory (see #2 above) and has more powerful I/O mechanisms.