El timer1 como todo Timer en realidad es un contador. Si contas la cantidad de pulsos que le llegan desde algun reloj podes saber el tiempo que paso.
En un microcontrolador se usan frecuencias siempre de 4Mhz o mas para alimentar el oscilador principal, esto quiere decir que el Timer va a contar de a 1 cada 1us ( 4/4Mhz ) lo cual es muy poco si te pones a pensar que el maximo que puede contar es de 65536, es decir 65.5ms aproximadamente. En 10 minutos es mucho.
En tu caso existe 2 formas de realizarlo.
-La primera opcion es usar otro cristal externo que sea de 32768Hz ( 32K ) ya que el Timer1 posee su propio oscilador para estos casos. De alli, podrias usar el preescaler de 1:8 asi solo entra una frecuencia de 4096, o que es lo mismo que cuente 1 cada 24.41ms, lo bueno es que al contar 4096 paso 1 segundo. Y suponete cada 40960 cuentas son 10 segundos.
Cuando entre a la interrupcion (10m * 60s/m)/10s = 60 veces, pasaron 10min
- La segunda opcion es usar el mismo oscilador que alimenta al nucleo, supongamos 8Mhz para dar un valor masomenos conocido.
Tendrias una cuenta cada 0.5us, si usas preescaler 1:8, seria lo mismo que contar cada 4us ( 0.5us *

. Ahora habria que cargar el Timer con un valor.
Si quisiera tener un interrupcion cada 250ms por ejemplo, deberia contar 250ms/4us = 62500
Asi que si cargas el valor de 62499 tendrias una interrupcion cada 250ms. Y por supuesto, deberias contar cuantas veces entra en la interrupcion, para 10min es decir 600s. tendrias que contar unas 600s / 250ms = 2400 veces.
Las 2 formas son viables.
La segunda opcion puede que no te sea tan exacta, la primera va a tener menos error, la forma de solucionarla para que cualquiera de ambas situaciones no tengan tanto error es que uses el modulo CCP en modo Compare ( que te resetea solo el Timer1 ) y uses la interrupcion del CCP en ves de la del Timer. Y tambien usar un cristal, ya que el oscilador interno no es demasiado preciso.