Couldn't agree more. See http://www.martinfowler.com/eaaCatalog/separatedInterface.html
To give another option for your situation, you should attempt to identify which assembly is the client of the other. Then you need to identify the classes that belong to the client assembly but are being referenced by the non-client assembly. Put these classes into a third "commons" assembly.
It may be the case that there are classes that DEFINITELY belong in the "client" assembly (for instance Form classes belong in the "UI" assembly), but are still being referenced by the "commons" or the "server" assembly. Most likely these classes have functions that the server is calling. You can turn these functions into delegates in the "Commons" assembly, and Events in the "Server" assembly. The "client" assembly would be responsible for registering their delegates on the "Server". And thus you have removed the circular reference between assembly A and B.