There is something wrong in your configuration file.
Most likely your assembly is wrong. For example if your configuration file looks like this:
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown
type="Foo.MyService, WRONGASSEMBLY"
url="tcp://localhost:33000/MyServiceUri" />
</client>
</application>
</system.runtime.remoting>
</configuration>
Everything will compile and run but you will use a local copy of the object instead of the remote copy. The assembly in the config file should be the assembly that your object resides in. So if you put the object in a common assembly and reference that, the common assembly will be the assembly you want.
If you don't feel like creating a common assembly, you can even include the source file that contains your object in both projects, but, and this is the surprising bit, the assembly you put in the configuration file will be your CLIENT assembly (not the server).
In other words, the assembly mentioned in the configuration file tells .NET what object in your code should be redirected to a remote location, it is NOT where the object is located (that's what the "url" is for). "namespace.typename, assembly" fully describes the object so remoting can switch the object new call into making a proxy.
There are some good examples here:
http://www.codeproject.com/KB/WCF/net_remoting.aspx