Uno de los mejores placeres llegados en PostgreSQL 8.4 es la función pg_terminate_backend.
En el pasado, cuando queríamos matar consultas fuera del control de postgres, llamabamos a pg_cancel_backend. El problema de esto, es que muchas veces postgres reejecutaba la query cuando la llamabamos, y no lograbamos acabar con ella.
Desde PostgreSQL 8.4 hay una nueva función llamada pg_terminate_backend. Esta función no reemplaza a pg_cancel_backend, pero basicamente hace lo que tu quieres cuando entras en el administrador de tareas de windows y haces un kill a determinado proceso. Tampoco corres el riesgo de cargarte el proceso root de postgres y tirar abajo todas las queris cuando te cargas el PID (que era la opción definitiva que teníamos antes para matar una query).
Ejemplos:
pg_cancel_backend vendría a ser un golpe en la muñeca
SELECT pg_cancel_backend(procpid);
pg_terminate_backend sería como darle con un palo en la cabeza.
SELECT pg_terminate_backend(procpid);