How about pg_dumpall dumps all users as superusers, and then changes them back to what they're supposed to be at the bottom of the script :)
Leaves you in kind of a dangerous state if the script doesn't complete, doesn't it?
If your script doesn't complete, it can leave you in all sorts of bad states, but I guess this is a reasonably bad one.
Someone else suggested having pg_dump dump all objects without ownership (so, on restore, they'd all initially be owned by the user running the script, hopefully a superuser) and then doing ALTER OWNERs and GRANTs at the bottom. This seems a little cleaner to me, though it's got the problem that somebody would have to go off and implement the remaining ALTER OWNER commands.
I guess that's me...
I'll have a crack at it, but don't let that stop anyone from piping up and helping me :)
Chris
---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faqs/FAQ.html