I havent messed with the compare registers on the AVR, but I have on the TI MSP430. So- looking at the datasheet I think it works the same way. You can get two different frequencies if you can handle the interrupts fast enough. The neat thing is that you can get any increment of the timer frequency.
If you put two fixed values in the output compare registers, they will just interrupt at a fixed offset of a the timer period. The trick is to put an updated value in the compare register every time it fires.
Set the timer to run continuously and just let it overflow. Set your first two delays in your two compare registers.
When the first compare happens, your interrupt routine needs to add your interval to the compare value and update the compare register. Likewise when the second compare matches, add its (longer or shorter) interval and update it.
The magic is that you just add a 16 bit value to your old compare value and IGNORE THE OVERFLOW. Your math will overflow (wrap around) exactly like the timer. Also, you have a fairly long time to update the registers because you just have to have the new value stuffed before the timer gets there.
That said - you need a fast interrupt handler, and you need to determine which compare triggered the interrupt. You can do this in C, but you will probably have to set the hardware registers directly. Also your maximum frequency is limited by the number of instructions in your interrupt handler. I was doing servos, so there was always plenty of time.
This project doesnt do two frequencies, but it does mess with the same registers....http://www.evilmadscientist.com/article.php?story=avrdac