One left off your list was Tapwave's Zodiac...
However, after trying out all my handhelds (PSP, DS, GBA, Zodiac -- no GP2X yet)
I would say there are +s and -s with each:
PSP
+ GREAT screen
+ digital and analog direction control
+ PSP games are good, if too few
+ Plays PS1, N64, SNES, Gen, GBA (I think), CPS1, CPS2, "some" MAME but all at full sound
+ best web browser
+ No "extra" memory cards to buy, just mem sticks
- Mem sticks aren't that cheap
- Not as much MAME or NeoGeo as some others...
- Harder to work with if you don't have the right firmware
- Heavier
DS
+ Touch screen and some NDS games are really innovative w/ it
+ 2 screens = 1 big screen (sort-of)
+ Has a web browser, but it's worse than the PSP's
- Have to have a linker card (R4 or something similar) to run homebrew
+ Plays DS, GBA, NeoGeo (and I'm probably missing a few here..)
+ Vibration support via rumble pak
+ Play movies ok
- but you have to convert to dpg files
Tapwave Zodiac
+ Touch screen, albeit one big one
+ Movies are EASY to play (conversion still recommended;
I use Vemode to make it easier)
+ Plays SNES, Genesis, GB/GBC, 2600, MAME (v.36), Neo Geo
- The MAME and NeoGeo have to play without sound to keep up
with the speed... don't know if that's true for the GP2X or not...
- Defunct company, no support
- Homebrew support is dying...
GP2X (NOT from experience, just from looking stuff up on the web)
+ Uses SD cards (cheaper)
+ Runs MAME, etc. -- pretty much same ballpark as Zodiac
+ Has optional TV out cable so you can use it like a portable movie player
for when you're at a hotel, etc.
- Battery hog; runs on AA's
+ Runs on AA's, so they're easily replaceable
RTSDaddy2: re: your question on flashing the PSP
If you have newer firmware you MIGHT need to flash it to run homebrew
MAME. You need to have a homebrew enabled firmware to run
homebrew apps. If you have a non-homebrew firmware above
3.xx (I forget exactly which version) then I believe you will also
need a Pandora's battery to downgrade it to 1.50. (if not, then you
can downgrade it to 1.50 like I did). From there, you can upgrade it
to homebrew versions as you need. (I like the 4.01m33-2 version
because it's the latest and has full web-browsing support, not
like 1.50...)