For the scoped challenged (like me), a PC microphone jack works great for reverse engineering IR protocol. It even has power (5V through a 200-ohm resister, I think) to drive the IR transistor. To see the signal, use any audio recorder that lets you zoom in on the waveform (like Audacity).
When I did my Arduino-driven IR remote, I used one timer to generate the carrier, which is fed to another timer to generate interrupts at the pulse period. The Arduino library doesn't support any of this, of course, and the code was super messy in the end. (Timer 0 is used for timing by the library internally, and repurposing it messes up calls like delay().) So, Dave's way is great as long as it works. (My code had to do other things in the mean time so couldn't block sending the IR sequence.)