In the ItemContainerStyle for the listbox (in Blend, right-click on the ListBox in the Objects and Timeline and select Edit Additional Templates / Edit Generated Item Container (ItemContainerStyle) / Edit a Copy... Choose a name and location for the new style in the enusing dialog box.)
In the generated style, locate the ContentPresenter tag. Somewhere in that area (depending on your specific layout needs) you will want to drop your Image item. Set its visibility to bind to the IsSelected property of the templated parent...
<Image Source="{Binding Property2}" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsSelected, Mode=TwoWay, Converter={StaticResource BooleanToVisibilityConverter}}"/>
As you see in the markup above, you do have to use a value converter, so cannot get away from using SOME code...IsSelected is a Boolean value, Visibility is a member of the System.Windows.Visibility enumeration. To convert form one to the other, you'll need a ValueConverter that switches from one value domain to the other. The Boolean/Visibility converter is fairly common, and I've included a simple one below (I tend to have a "stock" one that I use that includes a parameter to set which value to map "true" to in order to make it more flexible, but omitted it for conciseness...)
public class BooleanToVisibilityConverter : IValueConverter
{
public Object Convert(Object value, Type targetType, Object parameter, System.Globalization.CultureInfo culture)
{
var booleanValue = (Boolean)value;
return booleanValue ? Visibility.Visible : Visibility.Collapsed;
}
public Object ConvertBack(Object value, Type targetType, Object parameter, System.Globalization.CultureInfo culture)
{
var visibilityValue = (Visibility) value;
return visibilityValue == Visibility.Visible;
}
}