Desde 9.6 esto es mucho más fácil ya que introdujo la función pg_blocking_pids()
para encontrar las sesiones que están bloqueando otra sesión.
Así que puedes usar algo como esto:
select pid,
usename,
pg_blocking_pids(pid) as blocked_by,
query as blocked_query
from pg_stat_activity
where cardinality(pg_blocking_pids(pid)) > 0;