|There used to be a utility from sysinternals, but it does not work properly for Vista, and may cause problems AFAIK.|
Don't know of any apart from the paid commercial defragmenters. I don't use Vista anymore, but my colleagues who have it use Diskeeper 2009's boot-time defrag function to defrag the paging file. Diskeeper is great for normal defrag too since it can fix the MFT as well.
One option is to set the pagefile to zero, reboot and defrag *BUT* it may render some systems highly unstable if some apps depend on the PF and do not find it upon reboot.