I was doing research the past few days on getting flashcarts for my Nintendo systems to play my old games, so here's what I have so far:

(Feel free to leave a comment if you spot a mistake)

For the most part, any device older than a 3DS no longer has any updated products. This isn't a guarantee- for example, the best flashcart for the GBA (the Everdrive GBA) was released in 2016. However, for the most part, this guide should be 'up to date' for all old devices, even if you're reading this a few years after I write this.


TL;DR

If you own a Gameboy/Gameboy Color: Get an Everdrive-GB by krikzz
If you own a Gameboy Advance: Get an Everdrive GBA by krikzz
If you own a Nintendo DS/DS Lite/DSi: Get a R4i Gold 3DS RTS by r4ids.cn, and also get an EZ 3-in-1 Expansion Pack if you want to play GBA games on your DS/DS Lite but don't want to buy an Everdrive GBA
If you own a Nintendo 3DS or New3DS: Hack your 3DS with B9S to run 3DS/GBA/GBC/etc game ROMs from the built-in SD card, and then get a DS flashcart (like the R4i Gold 3DS RTS by r4ids.cn) if you want to play DS games. If you only want to play DS games, hacking is optional; just get a DS flashcart.

Be careful of scammers/spammers on this subreddit! If someone says "hey, you should buy a flashcart from xyz.com", you should check their comment history and see if they're trying to spam it. There is no official website that sells any of these flashcarts, all sellers are unofficial! If anyone claims to be "the official seller", that's a lie. The closest to "official website" for flashcarts is nds-card.com since they sponsor gbatemp (gbatemp is basically the biggest forum for console hacking right now), but they aren't official either.


Slightly longer TL;DR

Gameboy/Gameboy Color ROMs on Gameboy/Gameboy Color: Get an Everdrive-GB by krikzz

Gameboy Advance ROMs on Gameboy Advance: Get an Everdrive GBA by krikzz
Gameboy/Gameboy Color ROMs emulated on Gameboy Advance: Get an EZ-Flash IV 2015, and run Goomba Color Emulator (the Everdrive GBA flashcart also works just as well but is more expensive if you only want to run GB/GBC games)

Nintendo DS ROMs on a Nintendo DS/DS Lite/DSi: Get a R4i Gold 3DS RTS by r4ids.cn
Gameboy Advance ROMs emulated on Nintendo DS/DS Lite/DSi: Get a SuperCard DSTWO by supercard.sc (it has a special CPU needed for emulation)
Gameboy Advance ROMs natively on Nintendo DS/DS Lite: Get a R4i Gold 3DS RTS by r4ids.cn and a EZ 3-in-1 Expansion Pack
Gameboy/Gameboy Color ROMs emulated on Nintendo DS/DS Lite/DSi: Get a R4i Gold 3DS RTS by r4ids.cn (or any homebrew-capable card) and run any GBC emulator

Nintendo DSi ROMs on Nintendo DSi: Not possible since DSi 1.4.5 update (nobody cares about DSi games)

3DS info (may be subject to change):

Nintendo 3DS ROMs on Nintendo 3DS/n3DS: Hack your 3DS (if possible), it's the best way to run games. For practical purposes, flashcarts (Gateway, etc) are all blocked.
Nintendo DSi ROMs on Nintendo 3DS/n3DS: Not possible with a flashcart (nobody cares about DSi games); can be done if 3DS is modded
Nintendo DS ROMs natively on a Nintendo 3DS/n3DS: Get a R4i Gold 3DS RTS by r4ids.cn
Gameboy Advance ROMs emulated on Nintendo 3DS/n3DS: Hack your 3DS and run mGBA or the gpSP emulator. If you really want to spend money on a flashcart, get a SuperCard DSTWO by supercard.sc (it has a special CPU needed for emulation)
Gameboy Advance ROMs natively on Nintendo 3DS/n3DS: The only native GBA option on 3DS is via hacking your 3DS and running homebrew
Gameboy/Gameboy Color ROMs emulated on Nintendo 3DS/n3DS: Get a R4i Gold 3DS RTS by r4ids.cn (or any homebrew-capable DS flashcart) and run any GBC emulator; alternatively, mod your 3DS and install an emulator app


Playing on GameBoy or Gameboy Color

If you have the original GameBoy or the GameBoy Color, you should get the Everdrive-GB (released 2014). It's the best flashcart product on the market for the GB/GBC; the ElCheapoSD is slightly worse but a good cheap alternative if it's not sold out. There are several other very very old products, but they're really bad. "You need a special driver that works only on WinXP in order to load games" and "only contains 8MB of space" bad.

Everdrive-GB (about $90 in 2016)

ElCheapoSD 2.0 (about $75 in 2017)

Drag'n'Derp (about $100 in 2016)

USB 64m smart card (EMS 64)


Playing GameBoy Advance ROMs on a GameBoy Advance

This means playing on a GBA, a GBA SP, or a GBA micro. Any GBA form factor flashcarts only support GBA games (no native GB/GBC game ROMs); it is physically impossible to run GB/GBC games on the same cart natively. GB/GBC cartridges runs at 5V, while GBA runs at 3.3V; the GBA device hardware will physically switch between the different modes when inserting different Nintendo cartridges.
You can use the Goomba Color emulator to run GB/GBC ROMs on a GBA device.
Also, if you want DS-GBA connectivity (for example, trading Pokemon using Pal Park from a GBA to a DS game), you need a flashcart with NOR ROM that can load games onto the NOR ROM, where it is saved even when the device is powered off. You may also need to patch the DS ROMs (See Pokepatch).
Often, older generation flashcart devices need software to patch ROMs before copying it over. This is because ROMs need a special header patch in order to handle saves properly.

Everdrive GBA (newly released as of summer 2016) (about $100 in 2016)

EZ-Flash IV 2015 (Also known as "EZ-flash MicroSD") (about $50 in 2016)

M3 Perfect SD


Playing GameBoy Advance ROMs on NDS

If you have a DS or a DS Lite, and you want to play GBA games, you have 2 options: run GBA games natively, or emulated.

The best method, running GBA ROMs natively on a DS, would require using two different cartridges (a Slot-1 DS flashcart and a Slot-2 GBA expansion cartridge). However, the combined price would still be less than a single EZ-Flash IV flashcart for GBA standalone; you also don't need to patch the GBA ROMs beforehand if you are using a two-cartridge solution. The GBA expansion cartridge must be used in conjunction with a DS flashcart; the DS flashcart has software that loads the GBA ROM onto the GBA expansion cartridge, and then runs the DS in GBA mode.

If you don't want to use a Slot-2 flashcart to run GBA games natively, your only option to run GBA games on the DS is via the SuperCard DSTWO with emulation. The SuperCard DSTWO flashcart comes with an additional CPU (the DS is not powerful enough by itself to emulate GBA games). This means you don't need to use the GBA slot on your DS; the downside is that emulation tends to have worse performance/compatibility compared to natively running GBA games. Since the 3DS does not have a GBA slot, this is the only way to run GBA games on a 3DS without installing homebrew onto it.

Slot-2 Card (you will need a DS flashcart as well; see the "Playing NDS ROMs on NDS/3DS" section):

EZ 3-in-1 Expansion Pack (for DS Lite) or EZ 3-in-1 Fat Version (for Original DS) (about $30 in 2016)

M3 Real GBA Expansion Pack

Slot-1 Card:

SuperCard DSTWO (about $60 in 2016)


Playing NDS ROMs on NDS/3DS

Slot-1 Card:

Some old (no longer available new, but used to be top notch) options include the "M3 DS Real", "DSTT", and the "Acekard 2i". They will work on any DS/DSLite system and also play GBA games when used with a Slot-2 card (see the above section). They don't work on the newest DSi and 3DS Nintendo firmware, so I'd go with the newer options, which will play DS games on a 3DS as well (See this chart).
Nintendo has stopped blocking DS flashcarts on 3DS since version 6.0.0 firmware. Any flashcart (that plays only DS games) that work with 3DS firmware 6.0.0 should work on the current 3DS firmware; this does not apply to 3DS flashcarts (Nintendo is currently still actively blocking any flashcart that plays 3DS games).
Nintendo DS (and DS Lite) devices are not able to receive any software updates, so if you're short on money, most dirt cheap old flashcarts would work. These old flashcarts include the original R4 DS Revolution, which can be found for under $10. Those old and cheap flashcarts usually won't operate on a DSi, let alone a 3DS, though.

Some R4i flashcarts have firmware that are designed to break after a certain date (forced planned obsolescence). Avoid anything made by r4isdhc.com [1] [2] [3]. If your flashcart has "r4isdhc.com" printed on it, it'll probably stop working in a year or two. For R4i cards, try to stick to the cards named here (the r4ids.cn card is probably the best DS card on the market).
Try different firmwares for your card: http://www.linfoxdomain.com/nintendo/ds/

R4i Gold 3DS RTS (about $20 in 2016)

R4i-SDHC 3DS RTS (about $20 in 2016)

Ace3DS+ (Ace3DS Plus) (about $12 in 2016)

SuperCard DSTWO (about $60 in 2016)

SuperCard DSTWO+ (SuperCard DSTWO PLUS) (about $60 in 2016)


Playing GameBoy Advance ROMs on 3DS

If you want to play GBA games on a 3DS, the best method is to just install homebrew and run a GBA emulator (this is free). Check out the /r/3dshacks subreddit.

On the 3DS, there is only one brand of flashcart that can run GBA games: the SuperCard DSTWO (and the newer SuperCard DSTWO+). These flashcarts are expensive, but it's the only flashcart brand that works (since they have a built in CPU that does the GBA emulation processing). The DSTWO+ supposedly has a faster chip that does GBA emulation slightly better than the original DSTWO flashcart.

SuperCard DSTWO (about $60 in 2016)

SuperCard DSTWO+ (SuperCard DSTWO PLUS) (about $60 in 2016)


Playing 3DS ROMs on 3DS

I'm not going to maintain this section, as Nintendo updates can change things (since the 3DS is still supported).

Consider modding your 3DS with B9S (see the /r/3dshacks subreddit for information). The B9S mod for 3DS is basically "the perfect hack", where it doesn't require modifying hardware (software only), it completely unlocks the 3DS (allows removing region locks, allows playing play 3DS ROMs, any homebrew software, allow GBA/GBC/GB/etc emulation, etc), Nintendo can't patch it once the mod is installed, it's compatible with future 3DS firmware updates (updating the 3DS won't remove the hack), and you can easily remove the hack if you want to sell the 3DS or something. The only downside is that it's slightly time consuming to install.

The guide to run homebrew on your 3DS is here: https://github.com/Plailect/Guide/wiki

If you just want to play DS game ROMs on a 3DS, get a R4i Gold 3DS RTS flashcart.

However, if you just want to spend money on a flashcart (which lacks savegame backups, cheats, etc) to play 3DS games... as of right now (mid 2016), the best (only) flashcart with support for the latest 3DS firmware and all 3DS games, is the Sky3DS Plus. (Sky3DS clones may work too, but I don't recommend them since quality may be questionable). Older flashcarts like Gateway, DSTWO+, etc no longer work with the latest 3DS firmware.

Look here as a reference: http://wiki.gbatemp.net/wiki/3DS_Flashcart_Comparison