I'm using some IR as well. Ken Shirriff has written a nice library for sending and receiving IR. Contained in this library is a function which sets one of the PWM pins to the desired frequency.
IR library: Redirect Notice
"You do not wish to bang your bits @ 56 kHz" is what I've been told when I started out with IR signals.
About PWM: as soon as you have the PWM set to a certain frequency, it will - AFAIK - not take up any cpu time to keep pulsing.
However: you will need a timer to generate the PWM, for instance 2. This timer will then not be available for other purposes. (Note: not entirely true, you can still hook an interrupt to it, but you are bound by the frequency set for your PWM)
The library uses another timer (timer 1) for sending and receiving IR.
The only timer left is timer 0, which is used by the Arduino core for millis(), delay() and such.
Cheers,
Jack