Это правильный способ сделать это (при условии, что MyIcon.ico помещен в корневую папку проекта WPF с именем MyApplication):
Uri iconUri = new Uri("pack://application:,,,/MyApplication;component/MyIcon.ico");
myWindow.Icon = BitmapFrame.Create(iconUri);
Это также то, что действительно происходит, когда вы устанавливаете свойство Icon для окна в XAML.
При установке значка на новое растровое изображение он не будет отображаться плавно и корректно, а вместо этого будет немного пикселизирован.