Lego just released the specification of the Power Functions infrared protocol. Although I have already reverse engineered the commands that the remote-control sends and was able to send these commands from an add-on board connected to the NXT, the receiver can actually respond to more commands. It can respond to commands that start motors and keep them on indefinitely (the existing PF remote only sends commands that keep the motors running for a bit more than a second). It can also provide a variable amount of power to the motors, not just full-forward or full-reverse, which is all the existing remote sends.
So the specification should allow custom remotes to produce more sophisticated behaviors. Also, the document contains the precise rules and tolerances, so it should make custom remotes (and custom receivers) more robust.
A quick update: I was able to emit the new commands form my home-made IR link, and thereby to run the PF motors at various power levels and to run them indefinitely when the remote was off.