Timer 0 doesn't overflow 15 times per second...
Timer 0 overflows 15.2587890625 times per second.
15.2587890625 * 4 = 61.03515625
61.03515625 - 60 = 1.03515625 minutes in error.
That accounts for 1 minutes of error.
I think it would be fairly reasonable to say that another 1% or so could possibly be accounted for with the resonator, and maybe another fraction could be accounted for by using a stopwatch and watching an LED.

Do a search on the Olympic Timer here.
Either that or you could keep track of the extra .2587890625 ticks per second in different variables and add them into the 'ticks' variable as appropriate...
Code:
subtick var word
.......
......
disable
intManagement:
if (INTCON.2 == 1) then
subtick=subtick + 2587
if subtick => 10000 then
subtick=subtick-10000
ticks=ticks+1
endif
ticks = ticks + 1 ' Count pieces of seconds
..............
ticks = ticks - 15 (ticks = 0) 'One second elasped - update time <-just in case you miss one somewhere, don't zero it, just subtract 15
........
.......
That just might take care of .2587 of the .258790625 of the error.