Whatever you do wont be accurate unless you use an external crystal as the internal 4MHz oscillator only holds +/-1% accuracy at 3.5V Vdd 25 deg C. Over the normal Vdd range and temperatures above 0 deg C it will hold +/-2% degrading to +/-5% below 0 deg C or for the extended temperature range part, above 85 deg C.
Given an accurate oscillator, software delays cam be just as accurate as a hardware timer. The difficulty is keeping track of the small proportion of the CPU time used by other code in between calls to the delay routine. This is only an issue when you require background long-period timekeeping to quartz crystal accuracy, for which a hardware timer is vastly preferable because it can be configured to increment autonomously.
A further complication is lost time when writing to a running timer. When you write to a PIC timer, the prescaler is cleared so if you try to preload the timer in an ISR to get a 'nice' rate for your application timing (e.g a power of 10 fraction of a second) it will invariably loose time slightly. That wont matter with a +/-2% oscillator, but if you need crystal accuracy, and you want to use a timer with a prescaler you need to let the timer free-run and cope with the fact the resulting rollover interrupt rate is a binary fraction of the clock speed.
Your best bet is to study the
Gooligum Mid-Range PIC tutorials (free sample) (registration required for free download). Its for a different PIC, and uses XC8 undrer MPLAB X, but the code to actually handle Timer 0 and its interrupt is pretty much the same for your PIC and the old version of HiTech C you are using. The MPLAB 8 Simulator does a great job of simulating your PIC and the PIC12F629 used in the tutorials, including their hardware timers so you can check the code works as expected before porting it to your hardware.