You should use AppDomain Load and Unload for doing that,
Application domains, which are represented by AppDomain objects, provides isolation, unloading, and security boundaries for executing managed code. Application domains are created using the CreateDomain method. AppDomain instances are used to load and execute assemblies (Assembly). When a AppDomain is no longer in use, it can be unloaded.
For more details, you should read the below article on,
Why isn't there an Assembly.Unload method?
http://blogs.msdn.com/jasonz/archive/2004/05/31/145105.aspx