VACUUM FULL takes an
ACCESS EXCLUSIVE lock on the table, then rewrites the whole table. This will take a long time for a large table, especially since it must also rebuild all indexes. You haven't said anything about the table size or the server's I/O subsystem so it's hard to say if 5 hours is unexpected or not.
You shouldn't generally need to use
VACUUM FULL. Just use ordinary
VACUUM - and turn autovacuum up so it works harder if you need to do a manual
VACUUM more than very occasionally. It is safe to cancel the
VACUUM FULL; doing so will undo all it's work, though.
You generally only need to run
VACUUM FULL if you're trying to recover from severe table bloat caused by a long-running
<IDLE> in transaction connection, an abaondoned prepared transaction, insufficiently aggressive autovacuum, etc. If you can't afford the downtime required for this you can look into
pg_reorg as an online, reduced-locking alternative.