CLR loading is really something that happens through native APIs, either using hosting APIs directly (eg. ICLRMetaHost), or indirectly via COM. You can do this in managed code (no need to actually write any native code) by using .NET's interop facilities. So yes, you could write code that ran in CLR v2 which loaded CLR v4 and vice-versa.
I know we've got some code samples in the works, but I don't think they've been posted yet. Keep an eye on the SxS category of the CLR team blog. The simplest way is to build a managed COM component using one version of .NET, and then instantiate it using COM-interop from another version of .NET exactly as you would without SxS. Look for any samples for building and using COM components with .NET 2.0.
I hope this helps,