Omitting unused letters from A to Z list
[untested]

Something like this should do the trick:

{% for letter, members in craft.entries.section('members').order('surname', 'firstname') | group('surname|slice(0,1)') %}
    &lt;h1&gt;{{ letter }}&lt;/h1&gt;
    &lt;ul&gt;
    {% for member in members %}
        &lt;li&gt;{{ member.surname }}, {{ member, firstname }}&lt;/li&gt;
    {% endfor %}
    &lt;/ul&gt;
{% endfor %}