One tool to look at is the QConsolidate plugin.
What it does is to collect the files together from all the layers in a project (from wherever they are) and put them into a single directory (or rather, into a subdirectory of a folder), and it does all the editing of project XML files for you to point to the new location.
You choose a target directory, end up with a folder containing your project, and a subfolder containing all the files needed.

This suits my workflow as my projects often refer to common shapefiles, which I store once (organised by theme or source), rather than taking new copies into each new project's folder. Doing this lets me package them as standalone projects to send to others, for example.
Of course, back up everything first, and test migrated projects thoroughly. ;)
It's certainly okay with things like shapefiles, but you might need to migrate some types of file yourself (not sure if it handles style files, sqlite databases and so on)
But this will probably be less error-prone than manually editing your xml files.. but sounds like it'll still be a lot of work.
You may end up with a lot of duplicate data on your target drive, but this might not be a problem if you tend to copy common files amongst your projects anyway.