Personally, I use the ITK MPM for Apache to achieve this. It lets each vhost run with a separate user ID.
http://mpm-itk.sesse.net/
There is some overhead associated with this (an extra fork per request, compared to prefork MPM), but I don't host any high-volume sites so it doesn't bother me any. YMMV.
There is also the theoretical possibility that if there were a security vulnerability early enough in Apache's processing, it could cause a root security compromise. However I have not heard of anything of the sort since I've been using this MPM, so personally I trust it.
I'm sure there are many other solutions to this problem that others can chime in on, but this is the one I've grown most comfortable with.