The 8-bitty, produced for Thinkgeek by iCade maker Ion, takes every bit of the iCade's functionality, and shrinks it down into an affordable, portable, and iPhone-friendly control pad. Nobody on Earth actually needs a gamepad for their iOS device, but this is as close to practical as one is going to get.
The 8-bitty has all the same buttons as the iCade, including eight different inputs and a d-pad, arranged as four face buttons, start, select, and two shoulder buttons on a device almost exactly the same size as an NES controller (as seen below). It connects to the iPhone or iPad through a simple Bluetooth pairing process, and supported games recognize it instantly.
One of the reasons these things aren't more useful is software support. Few iOS games support external controllers and, being one of the first, the iCade is the best supported among them. In terms of software compatibility, the 8-bitty is identical to the iCade.
Unfortunately, all of the games I tried suffer from the same problem: the button settings are non-configurable. The games all think they're connected to an iCade, which has two rows of four buttons; when translated over to the 8-bitty's setup, the button placements can be kind of random. For example, Arch Rivals has its two actions mapped to the left and right shoulder buttons, while Battle Kid's controls have you jumping with what would be Y on a SNES pad, and shooting with R.
This situation is far from ideal, requiring a fishing expedition for the button placement every time you try a new game, but, to be fair, it is infinitely preferable to trying to play Spy Hunter with a touchscreen.
The $30 8-Bitty is recommended, but not unreservedly. It's a great controller for iOS (and Android, though I did not try it on an Android device) but the haphazard arrangement of buttons, and the lack of wider compatibility, keep it from being ideal. Coincidentally, those are both problems that would be fixed by wider adoption of the device. The more controllers in homes, the more likely one is to emerge as the de facto standard, and the more likely developers are to spend their time and resources adding support for it.