Que tal Kastor,
El problema de usar un TTimer con un servicio de windows, es que este depende de los mensajes de ventana para poder ejecutarse.
Lo que deberias de hacer es crearte un timer de "bajo nivel" y que no dependa de alguna ventana.
Checate la funcion SetTimer del api de windows:
Código Delphi
[-]UINT SetTimer(
HWND hWnd, UINT nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc );
En donde en tu caso primer parametro va NULL y el segundo a Cero (0).
Con esto creas el timer y almancenas el valor que te devuelve la funcion para posteriormente poder "matar" al timer identificado con este valor
Código Delphi
[-]
The KillTimer function destroys the specified timer.
BOOL KillTimer(
HWND hWnd, UINT uIDEvent );
Ahora lo que te queda es crearte una funcion que se llamara cada vez que se de el tiempo en el timer:
Código Delphi
[-]
void CALLBACK FuncionDeTimer(HWND HWindow, UINT uMsg, UINT idEvent,
DWORD dwTime)
Espero te sirva.
Saludos