Could you just read the assembly into a memory stream and load that? It should save you from locking the the original assembly but I've seen from other comments this will cause any linked assemblies to lock.
Then the assembly you want to delete is just a disconnected file so after you've disposed of it after reading it in, you should be able to delete it.