OpenVZ has had live migration for over two years now... and the way the vzmigrate script does it (a stock part of OpenVZ) is by doing multiple rsync passes. It does the first pass while the container continues to run, then does a checkpoint, and then does a second rsync, and then a restore.
Depending on the filesystem size, it can take a while... although if the deltas are small for the second rsync pass, the perceived "downtime" caused by the migration is usually only a few seconds... with network connections maintained. For offline migrations, where the container is shutdown completely and then restarted on the target host, downtime is generally only 20-30 seconds... depending on how long it takes to start up the container.
I would imagine that Proxmox VE uses vzmigrate or their own script designed similar to vzmigrate, but I'm not positive.