В настоящее время я работаю над крупным проектом, в котором мы реализуем mvvm, CAL (руководство по составным приложениям) в Silverlight. Конечно, уровень разделения проблем очень высок .. но
1) код становится слишком устойчивым.
2) MVVM отлично подходит для небольших проектов (все эти примеры hello-world по всему Интернету), но уменьшает ваши возможности: например, Routed events (отличный инструмент) по-прежнему EVENTS, но, как вы знаете, Категорически запрещено использовать их напрямую, как только это будет за кодом), если вы хотите следовать mvvm.
3) Привязка команд STILL не работает должным образом в Silverlight (.net4.0, vs2010). Это длинная история, просто запомните этот сюрприз, когда ваш делегат CanExecute не сработает при запуске приложения.
Хороший ответ на ваш вопрос: «MVVM хорош для проектов с простой логикой пользовательского интерфейса».
Спасибо, Илья.