The BCM2835 has a single USB port controller that allows for On The Go operation. OTG is unavailable in the Model B, with good cause: the USB port is already taken by another chip that provides two USB ports and ethernet (!!!).
The way I understand it, the Model A will not have this chip, which makes it possible to run OTG USB. There's a problem, however: OTG connectors have 5 pins and are not compatible with regular USB sockets.
It would be ludicrous to ask you to replace the Model A's sole USB port with an OTG 5-pin port, however there's something else that you can do: just route the fifth pin (ID pin) right next to the GPIO/UART/SPI/I2C… pins. That way, regular folks get their USB ports, and hackers can build an OTG port if they so please.
Why is OTG so important?
Maybe you've heard about, run into or used the Arduino. It's a small platform for developping electronics with a rudimentary computer in its middle. Despite the fact that the Arduino microcontroller is orders of magnitude less powerful (and harder to use) than the Raspberry Pi, it sells a lot of units because it's currently the best option for DIY electronics enthusiasts. The Raspberry Pi will surely change this, but so far there's a caveat: the Arduino can be used as a class compliant USB device with ANY computer, while the Raspberry Pi can't. This means Arduino and Arduino-like boards can be used as computer mice, printers, keyboard, musical instruments, joysticks, etc. while the Raspberry Pi can't.
But you know what? All that could be fixed with a single PCB trace.
I'm a software engineering student at McGill University, and I spent the night developping a custom kernel for the Raspberry Pi in order to use it as a MIDI Controller. Imagine my frustration when I found out that the current model doesn't make use of the Broadcom chip's OTG capabilities.
Thank you for reading!
E: I feel like I should mention that there is a work-around to this (assuming you don't add the trace), but it is expensive, unreliable, complicated and generally "ghetto"/hacked together. Basically, take an Arduino-like controller such as the Teensy ($20) loaded with the LUFA stack. We can communicate with it via I2C or another such protocol, and use the controller's USB port to provide Device functionality. This is however complicated and inconvenient.
