Index: /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 6929)
+++ /trunk/src/org/openstreetmap/josm/actions/AddImageryLayerAction.java	(revision 6930)
@@ -103,4 +103,5 @@
             tree.updateTree(wms);
             final JComboBox formats = new JComboBox(wms.getFormats().toArray());
+            formats.setSelectedItem(wms.getPreferredFormats());
             formats.setToolTipText(tr("Select image format for WMS layer"));
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 6929)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/AddWMSLayerPanel.java	(revision 6930)
@@ -78,4 +78,5 @@
                     tree.updateTree(wms);
                     formats.setModel(new DefaultComboBoxModel(wms.getFormats().toArray()));
+                    formats.setSelectedItem(wms.getPreferredFormats());
                 } catch (MalformedURLException ex) {
                     JOptionPane.showMessageDialog(getParent(), tr("Invalid service URL."),
Index: /trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 6929)
+++ /trunk/src/org/openstreetmap/josm/io/imagery/WMSImagery.java	(revision 6930)
@@ -12,4 +12,5 @@
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -17,4 +18,5 @@
 import java.util.regex.Pattern;
 
+import javax.imageio.ImageIO;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -26,4 +28,5 @@
 import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
 import org.openstreetmap.josm.io.UTFInputStreamReader;
+import org.openstreetmap.josm.tools.Predicate;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
@@ -63,5 +66,12 @@
 
     public List<String> getFormats() {
-        return formats;
+        return Collections.unmodifiableList(formats);
+    }
+
+    public String getPreferredFormats() {
+        return formats.contains("image/jpeg") ? "image/jpeg"
+                : formats.contains("image/png") ? "image/png"
+                : formats.isEmpty() ? null
+                : formats.get(0);
     }
 
@@ -165,10 +175,22 @@
             child = getChild(child, "GetMap");
 
-            formats = new ArrayList<String>(Utils.transform(getChildren(child, "Format"), new Utils.Function<Element, String>() {
-                @Override
-                public String apply(Element x) {
-                    return x.getTextContent();
-                }
-            }));
+            formats = new ArrayList<String>(Utils.filter(Utils.transform(getChildren(child, "Format"),
+                    new Utils.Function<Element, String>() {
+                        @Override
+                        public String apply(Element x) {
+                            return x.getTextContent();
+                        }
+                    }
+                    ), new Predicate<String>() {
+                        @Override
+                        public boolean evaluate(String format) {
+                            boolean isFormatSupported = isImageFormatSupported(format);
+                            if (!isFormatSupported) {
+                                Main.info("Skipping unsupported image format {0}", format);
+                            }
+                            return isFormatSupported;
+                        }
+                    }
+            ));
 
             child = getChild(child, "DCPType");
@@ -191,4 +213,12 @@
         }
 
+    }
+
+    static boolean isImageFormatSupported(final String format) {
+        return ImageIO.getImageReadersByMIMEType(format).hasNext()
+                || (format.startsWith("image/tiff") || format.startsWith("image/geotiff")) && ImageIO.getImageReadersBySuffix("tiff").hasNext() // handles image/tiff image/tiff8 image/geotiff image/geotiff8
+                || format.startsWith("image/png") && ImageIO.getImageReadersBySuffix("png").hasNext()
+                || format.startsWith("image/svg") && ImageIO.getImageReadersBySuffix("svg").hasNext()
+                || format.startsWith("image/bmp") && ImageIO.getImageReadersBySuffix("bmp").hasNext();
     }
 
