Стоит проверять не текст селекта, а его значение. Как-то так:
<form name="af" method="get" action="">
<input type="hidden" name="afid" value="[+af.id+]" />
<label id="pcnCity" name="pcnCity">Город:
<select>
<option value="msk">Москва</option>
<option value="spb">Питер</option>
</select>
</label>
<label id="pcnMosMetro" name="pcnMosMetro" style="display: none;">
<select>
<option>Парк Культуры</option>
<option>Фрунзенская</option>
</select>
</label>
<label id="pcnPitMetro" name="pcnPitMetro" style="display: none;">
<select>
<option value="msk">Горьковская</option>
<option value="spb">Невский Проспект</option>
</select>
</label>
<input type="submit" name="name" value="Найти" />
</form>
<script src="http://yandex.st/jquery/1.8.0/jquery.min.js"></script>
<script>
$(document).on('change', '#pcnCity select', function (e) {
var value = $(this).val();
if (value === 'msk') {
$("#pcnData, #pcnPitMetro").hide();
$("#pcnMosMetro").show();
} else if (value === 'spb') {
$("#pcnData, #pcnMosMetro").hide();
$("#pcnPitMetro").show();
} else {
$("#pcnData").show();
}
});
</script>