These things you talked about seem a little similar to our problem here.
When we build our application we first delete the correspondent folder in IIS7 wwwroot and than recreate it. If we use the application before building it again (everyone does this), we get an access denied error on the folder deleted when recreating it.
So, I did the following thing. Instead of building I manually deleted the folder in wwwroot and refreshed the windows explorer page. The folder reappeared. I than fired up process explorer and searched for a handle with the folders name. So I found out that IIS7 (w3wp process) is keeping a handle opened for that folder.
Restarting IIS fixes the problem.
My question is how can I fix the problem without restarting IIS each time I build the application ?