Does Postgres automatically rotate WAL files out (pg_xlog) if archive_mode is off?
If archive_mode = off, PostgreSQL will delete old WAL files as soon as they are older than the latest checkpoint. These checkpoints occur by default at least every 5 minutes, so there should never be many old WAL files around.

If you set archive_mode = on, a WAL file are only deleted once archive_command has returned success for that file. An empty archive_command should always do that immediately. It is a tradition to set archive_command = '/bin/true' to indicate that you temporarily disabled archiving.