I'm not sure about long ago, but the recent version of libpq has NOTIFY working asynchronously (you can stick the connection file descriptor in a select(2) and you'll get woken up when a notify is available).
http://www.postgresql.org/docs/7.1/static/libpq-notify.html
What has happened recently though is that more language bindings to libpq have started exposing the NOTIFY functionality in more convenient ways.