Hola Marcos
Sin haberlo probado, yo diría que eso no va a funcionar, más que nada porque a la que haces un Open en la Query, el programa queda congelado hasta que el servidor devuelve el resultado de la consulta, por lo que no creo que saltara el OnTimer del TTimer (bueno, saltaría pero después de que el servidor devolviera el resultado y se procesasen los mensajes)
Una opción que sí funcionaría, sería lanzar el SQL en un hilo de ejecución (Thread) aparte del principal y, esta vez sí, controlar con un TTimer el tiempo y, si supera el tiempo deseado, matar el hilo. Claro, no se como reaccionaría el servidor al matar ese hilo ¿quedaría la consulta pillada en el servidor? Supoongo que dependerá del servidor que haya detrás de la consulta