I faced this error while updating a module I had recently moved from a DNN3 environment to a DNN4 WAP one. I received all sorts of advice including this post filled bits and pieces but nothing was a solution. After a few frustrating hours I decided to go back to basics and review what I had done to move the module. The module was working OK in my development but not in my test install.
After going through the web.config file, project configuration, dll naming setup, namespaces, references and everything inside the DNN VS Solution it was clear I was looking in the wrong place. Fianlly, I opened the nAnt build file and there it was. I had been compiling against a different dotnetnuke.dll. I was pointing to the wrong virtual directory, a previous DNN version install. The compiler never complained and I could get my module dlls. The module raised the error only at run-time in the test site. I just pointed the reference to the correct site and I was in the game again.
I hope this helps someone else not to lose so many hours with something so obvious.