The M3's a bit over-kill, but it's probably one of the better ones.
I have an EFA-II, it was about AU$50 if I remember correctly.
It's cheap, but it works quite well (although, having said that, the first one I got was DOA(ish), so I sent it back, but got a replacement quite quick).
I'd suggest buying from
Kick Trading (where I went) or
Lik Sang, since both seem to get great customer service reviews.
Basically, you're looking at three different options;
o PassMe
o NoPass
o WiFiMe
(combined with)
o FlashMe
The first two options don't require you to re-flash your firmware, so warrenty, etc, stays intact. However, it requires you to have an extra peice of hardware (and in the case of PassMe, at least one original DS game cart).
For WiFiMe, you first flash your DS with FlashMe using either of the first two methods (so, you'll have to find someone that can do it for you
Here), then you need a Wireless network card with a specific chip set and you can then use that to simply send ROMS (of 4MB or less) over Wireless to the DS.
Unfortunatly, if you have a DS Lite, the WiFiMe method will not work for you.
With PassMe and NoPass you have two peices of hardware, the first, the 'Pass' device, is executed by the DS, then sends control to the GBA slot. In here, you have your second peice of hardware called a flash cart, which you use to store all your ROMs (and saves, etc). Since this is a nds rom, and you have it stored in the GBA slot, you cannot directly execute it (it tries to run as a GBA game and fails), which is why you need the Pass device.
The PassMe simply executes the header of a commercial game, and uses that to send control to the GBA cart.
The NoPass has its own built in header information (and usually comes in the form of the less-bulky single DS cart) which also sends control to the GBA cart.
Finally, if you decide to use FlashMe, you can then simply run nds ROMS directly from the GBA flash cart, which means you no longer need the Pass device.
There are HEAPS of options out there, some work better than others, some have issues, some have bigger storage, some are better made, some can't run certain types of ROMs (for example, those that use file-systems to access data appended to the rom), etc, etc, etc.
The best place for more information is the gbadev.org
Nintendo DS Forum.
gbadev.org is probably one of the biggest sources of information for anything to do with GBA and DS dev (they're very closely tied together!)
Good luck!