savepoints are another one, which pgsql gets with 8.0 as well. It allows you to catch / retry on errors that would have, in the past, caused the whole transaction to fail.
Synchronous log level replication would be nice. Slony-I is great, but being asynchronous, certain types of transactional systems just aren't gonna be able to use it. I think the Mammoth replicator does log level synchronous replication, but it's $1,000 so I don't know. :(
pgpool does syncrhonous, but on the statement level, which can lead to some strange anaomolies in things like dates being different etc...
What I really want is something like Oracle's RAC, where clustering and failover are used to make multiple servers look like one server to the average user, and the implementation details are not seen by anyone but an admin. It's getting closer every year.
Lazy and automatic vacuuming (lazy vacuum is in 8.0, automatic vacuuming via pg_autovacuum is in /contrib, getting there quickly)
row locked tables instead of MVCC tables for highly updated queues and such. (Likely not gonna happen in my lifetime, as it's apparently a MAJOR pain to write something like that in PostgreSQL's codebase, which is built heavily around MVCC).
2 (or possibly 3) phase commit. save points would allow a basic implementation to be done in user land now.
table partitioning, materialized views, and updateable views are all things you can do now in userland if you know what you're doing, but would be nice to have built right in.
A query optimizer that learns from its mistakes.
I'm sure there are a few more. Nowadays it's mostly little things whereas a few years ago it was major issues like vacuum eating up all your bandwidth (or even further back, locking your tables) that kept PostgreSQL out of the enterprise. Nowadays it's a likely as not to be a lack of available enterprise talent that keeps it out of the hosting center. Which is a good thing, for people with the talent. 🙂