I have found that the most convenient way to dump a single PostgreSQL database so that it does not contain any user information, grant statements, etc. is like so:
pg_dump -c -O -x -U user dbname
This will send the database to stdout in the textual SQL format. Pipe through gzip and into a file to save the dump:
pg_dump -c -O -x -U user dbname | gzip > dumpname.sql.gz
Explanation of the relevant flags from the pg_dump manpage:
-c
--clean
Output commands to clean (drop) database objects prior to (the commands for) creating them.
-O
--no-owner
Do not output commands to set ownership of objects to match the original database. By default, pg_dump issues ALTER OWNER or SET SESSION AUTHORIZATION statements to set ownership of created database objects. These statements will fail when the script is run unless it is started by a superuser (or the same user that owns all of the objects in the script). To make a script that can be restored by any user, but will give that user ownership of all the objects, specify -O.
-x
--no-privileges
--no-acl
Prevent dumping of access privileges (grant/revoke commands).