Well... you shouldn't be using any reall hi-poly models for video games. Characters should have a max of 8,000 polys if that. That's where I draw the line these days.
I load my models before I go to the RenderLoop. Sounds like your thread is fighting to load the models and render at the same time.
When I load a new level I will stop my render loop and restart it after loading in my assets.
I'll stop my loop by passing DoLoop=False and then I have an if statement that catches if I am loading a new level. Otherwise it releases my assets and ends the game.
Do While DoLoop = True
Render stuff...
Loop
If ChangingLevel = True then LoadNewLevel: Exit Sub
ReleaseStuff
End