This can often happen as the result of some of the assembly's metadata changing. Has the version number been incremented? Alternatively this might happen if the private key used to sign the assembly has changed and the dependent code has not been recompiled to reflect the assembly's new identity.
There is also a possibility that some component of your project is targeting a different version of the .NET Framework or Common Language Runtime. The version number of the target framework is embedded in an assembly's metadata header and will affect assembly binding.
Another thought: it does sound like your VS2010 installation is busted. What happens if you try to compile from the command line outside of the IDE?