The application bar automatically makes your white-on-transparent images white under the dark theme and black under the light theme. You can accomplish this same effect with your own custom images, without relying on custom code to swap images based on the theme (although that works, too).
The trick is to use the image as an opacity mask for a theme-colored element, such as a rectangle. For example:
<Rectangle Width="48" Height="48" Fill="{StaticResource PhoneForegroundBrush}"> <Rectangle.OpacityMask> <ImageBrush ImageSource="/Images/icon.png"/> </Rectangle.OpacityMask> </Rectangle>
The Groceries app uses this technique to make all of its non-application-bar images show up nicely for both themes, for example:
Be aware that opacity masks are expensive performance-wise, but for small, static content I think you'll be just fine.