I had a problem like this on a (different) PIC where the supply was not well-regulated (it didn't need to be!) and I used a bandgap voltage reference diode - essentially a 1.2 volt Zener, although they come in different voltages and are well-behaved with respect to temperature. It was connected like a Zener, with a resistor at the "top" end but the "bottom" end of this diode was connected to an I/O input of the PIC that, when not in use, was set high so that the diode did not conduct current, reducing battery drain. The problem with these devices is that they are not necessarily "dirt cheap."
In theory, one could use an ordinary diode for this, but these drift all over the place with temperature. Similarly, a cheap, old-fashioned "dim" red LED will have a fairly consistent voltage drop as well (1.8 volts or so, varying with the device) - a bit less temperature dependent than a normal diode, but still pretty bad - but it may be "good enough." (And before anyone asks, no, it won't be affected by ambient light by more than a couple A/D counts...)
Knowing the voltage across the diode, an A/D reading was made of this diode, then an A/D reading made of the voltage source and the actual voltage of that source determined ratiometrically.
Many newer PICs (but not the one that you chose - at least as far as I can tell from a quick review of the data sheet) have these bandgap references built into them already, to allow one to do exactly this, saving the need to tie up a few I/O pins in the process!