If this refreshIconis the source of your property Icon, you may need to either invoke NotifyPropertyChanged("Icon")after your sample code (and implement the interface INotifyPropertyChanged) or declare Iconhow DependencyProperty.
Here is a link to more information about the interface INotifyPropertyChanged.
Ahh, I see your problem ... try setting the property Iconto Imageand bind to the source Image:
<Setter Property="Icon">
<Setter.Value>
<Image Source="{Binding Icon}" />
</Setter.Value>
</Setter>
"" xaml :
<Setter Property="Icon">
<Setter.Value>
<Image Source="/ProjectName;component/Images/IconName.ico" />
</Setter.Value>
</Setter>