I have two suggestions which are quick and don't require heavy modification to the ListPicker
control...
1) Use the phone's accent colour as an OpacityMask
with the image...
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Fill="{StaticResource PhoneAccentBrush}" Height="40" Width="40">
<Rectangle.OpacityMask>
<ImageBrush ImageSource="{Binding Icon}" />
</Rectangle.OpacityMask>
</Rectangle>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
If the icon uses the accent colour, it will be visible on either a black or white background.
2) Change the background colour of the ListPicker's highlighted state so that it's white when using the Light theme (default) and black when using the Dark theme (different from the default). I also changed the Foreground colour.
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="UserControl"
Storyboard.TargetProperty="Foreground"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource PhoneForegroundBrush}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames
Storyboard.TargetName="Border"
Storyboard.TargetProperty="Background"
Duration="0">
<DiscreteObjectKeyFrame
Value="{StaticResource PhoneBackgroundColor}"
KeyTime="0"/>
</ObjectAnimationUsingKeyFrames>
Changing a control's theme like this should not cause submission problems as long as the control is a) still usable and b) works on Dark and Light themes.
ListPicker
control, try this tutorial - Neil Turner