Thanks for your reply. Do you know of any options that I could give pg_dump/psql to avoid creating one big transaction? I'm using the plain text format for pg_dump.
For the plain text format, it is already not one big transaction, unless you specify to -1 to the psql. However, the load of any individual table will still be a single transaction, so for a very large table it will still be a very long transaction.
Using pg_dump for --inserts could get around this, but it would probably be better to fix the fundamental problem by increasing wal_keep_segments or something of that nature.