When you test the ODBC for user on company B - do you have a way to Verify that the ODBC connects to the correct server?
Have you tried turning off the database for company A to ensure that the connection is going to the right place.
It is hard to fathom that you would connect to A when you have set everything to B unless there is something about the SQL Server that makes it think it is company A. Either way, I would have expected that you would have connected to company A anyway since users were replicated. I know that none of this is an answer or suggestion, but something in the milk is just not quite clean.