В дополнение к тесту выше - который удостоверяется, сериализатор примет Ваш объект, необходимо сделать тест туда и обратно. Десериализуйте результаты назад к новому объекту и удостоверьтесь, что эти два экземпляра эквивалентны.
Есть вы пробовали установить таймауты на клиенте?
Например:
<binding name="IncreasedTimeout" closeTimeout="12:00:00" openTimeout="12:00:00"
receiveTimeout="12:00:00" sendTimeout="12:00:00">