Я бы сказал, что основное отличие состоит в том, что WPF требует, чтобы у клиента была .Net 3.0+ framework. Silverlight требует только времени выполнения. Теперь, как говорится, WPF больше ориентирован на контролируемые среды, такие как интрасеть. Silverlight предназначен для публичной сети. Другое отличие состоит в том, что Silverlight является кроссплатформенным (Windows, Mac, Linux в будущем и кросс-браузер). WPF предназначен только для Windows.
.NET Framework может быть огромной загрузкой для некоторых пользователей. Silverlight только 4-5 МБ. Это большая разница для запуска вашего приложения в Интернете, но не большая проблема, если это внутреннее приложение в вашей компании.
Silverlight - песочница, предназначенная для использования в Интернете. Так что если вашему приложению требуются дополнительные разрешения, вам понадобится WPF.
Есть также некоторые различия между кодом Silverlight и WPF. Но из того, что я слышал, конечная цель - заставить Silverlight работать внутри WPF с минимальными изменениями кода. Но их пока нет.