If I understand your question and structure correctly, then this might work.
{% entries = craft.entries.section('series').limit(null) %}
{% mostRecentSermons = [] %}
{% for entry in entries %}
{# retrieve most recent sermon related to series #}
{% set sermon = craft.entries.section('sermons').relatedTo(entry).order('postDate desc').first %}
{# merge sermon into mostRecentSermons array #}
{% set mostRecentSermons = mostRecentSermons|merge([sermon]) %}
{% endfor %}
If you need to worry about duplicates then you can use {% if not sermon in mostRecentSermons %}
before merging.
You may also want to wrap this in {% cache %}{% endcache %}
tags to improve performance.