I'm trying to understand what is going on internally when doing a VACUUM FULL on a table in 8.3.
The info you've gotten from Kevin is all correct, but you may find some of the additional trivia in this area collected at http://wiki.postgresql.org/wiki/VACUUM_FULL interesting as well.