How to configure the internal oscillator in a PIC16F616?
Setting TMR0 to a fixed value in the interrupt routine is a bad idea if you want a reliable periodic interrupt.  You are setting it to 254.  That creates 2 dead cycles and then it needs 2 more cycles to overflow.  The interrupt condition will be set long before the processor can come back and stuff another 254 into the timer.  You are using a compiler (don't do that when looking at individual instructions), so you don't know how many instructions there are to exit the interrupt routine and how many there are on entry.  20 &micro;s implies 40 instruction cycles.  That sounds high, but again, you're using a compiler so you've already said you don't care about efficiency and have given up the right to count cycles.

If you want to verify that the PIC is running at the right clock rate, let timer 0 free run without touching it.  That should interrupt every 256 instruction cycles, or every 128 &micro;s.

If you want a reliable periodic interrupt, the first reaction should be to use timer 2.  That's what it's there for and why it has a built in period register.  If you need timer 2 for something else, you can still use timer 0 but add into it each interrupt, not reset its value.  That way the time from when the timer wraps to when you re-write it doesn't get lost.  Also, don't expect a rediculously short period like 4 instruction cycles.  The PIC can't get into and out of a interrupt that fast, even without saving state.