Listing all entries which belong to an entry
I had a similar problem to yours, and here's what I ran into. 

It may be that you're using entry for your main info on the retailer entry page? Because {{ for entry in relatedProducts }} would return one result (the retailer entry). So instead, use a different variable for the loop. 

Try something more along the lines of this:

&lt;h1&gt;{{ entry.title }}&lt;/h1&gt;
&lt;div&gt;{{ entry.body }}&lt;/div&gt;

{% if craft.entries.section('products').relatedTo(entry)|length %}
  {% set relatedProducts = craft.entries.section('products').relatedTo(entry) %}
  &lt;h3&gt;Some great entries&lt;/h3&gt;

  {% for relatedEntry in relatedProducts %}
   {{ relatedEntry.title }}
   {{ relatedEntry.body }}
  {% endfor %}
{% endif %}


Also, note that I wrapped the whole thing in an if-check. It checks to see if there are related products first, and then, if there are, sets the variable and runs the loop.

And your H3 should be outside the loop, otherwise it'll show up on every pass around.