This is an easy to build GameBoy-like system using only an Aruduino Uno, GLCD, and some momentary switches. You can write your game sketches using the u8glib graphics library. At the bottom of the page is the source code of some games my son wrote.
My son and I used a Radio Shack Sidekick box as the housing. We bolted the Arduino Uno onto it using short plastic standoffs, and cut holes to access the USB port and power jack. An external umbilical connects the 9V battery, or you can attach an external power supply.
The SainSmart 12864 GLCD is mounted on top using standoffs. We used the serial header as described in Brad's *duino blog:
(Top Row) SID ---> D11 CS ---> D12 SCK ---> D13
(Bottom) GND ---> GND --- ---> --- VCC ---> V5
We used the tiny momentary switches that came with the Sidekick for a D-pad. I heated up a paper clip to melt holes for the pins, and soldered leads to them on the interior. We then added some hot glue to help keep the leads from snapping off due to flexing. The "A" and "B" buttons on the right are Radio Shack submini momentary buttons.
The controller buttons all have +5v on one pin, and attach to an Arduino digital input on the other pin. We use 10k pulldown resistors on each input, but you can avoid them if you use the built-in 20k pullup resistors as described here.
Below is my son's proof of concept sketch that displays a different letter for each controller button. As we discovered later, large fonts can eat up all your available memory, so not a good idea!
"A" button to apply thrust, try to avoid crashing... Uses EEPROM to save high score.
Player 1 uses L and R buttons, Player 2 uses A and B buttons.