Hi !
Timer1 can count up to 65535 (16 bits) and can accept external pulses. This is in my opinion the easier and more accurate way to measure low frequency pulses. Just let the timer1 (in fact a counter) working for exact 1 second, stop it and read the registers (TMR1H and TMR1L) contents, this is the frequency value. For a new reading, just clear both registers, enable the timer again, wait 1 second and restart the procedure.
Another way is to use PICmicros with CCP modules (Capture Compare PWM) using the Capture feature to measure the period between two pulses. You have to calculate the frequency (1/T). You shall lose some accuracy because the period time will be rounded (to integer) in the registers.