I spent last weekend implementing encoding and decoding of PostgreSQL's date and time types. With this complete, epgsql is nearing a 1.0 release. Aside from bug fixes I've also implemented support for the 'returning' clause to return rows from an insert, update, or delete. The README file has been updated and includes a section describing how PostgreSQL types are represented in Erlang.
One thing you may notice is a lack of support for connection pooling, which I have remedied with epgsql_pool, available from this mercurial repository:
I debated including connection pools in epgsql itself, but I don't think they are the correct approach in Erlang. Instead I create pools of application-specific database accessor processes which are supervised and hold a persistent connection. This provides both a nice abstraction and the ability to prepare named statements during initialization rather than when a request comes in.
So use epgsql_pool at your own risk, I probably won't be maintaining it =)