Вы можете использовать DataTrigger и изменить изображение (полностью в XAML) в зависимости от значения свойства в ViewModel. Лично я бы использовал enum, так как вам может потребоваться несколько состояний.
VisualStateManager также будет работать для этого, но потребует WPF Futures или .NET 4.
Чтобы использовать DataTrigger, вы можете сделать что-то вроде:
<Image>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="1.png" />
<Style.Triggers>
<DataTrigger Binding="{Binding ViewModelEnumProperty}" Value="Image2">
<Setter Property="Source" Value="2.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
При этом будет использоваться «1.png», но когда ваше перечисление установлено на «Image2» в виртуальной машине, оно переключится на 2.png. При необходимости можно добавить больше DataTriggers.