заменить
$startMonth = strtotime(2011-02-20);
$endMonth = strtotime(2011-06-05);
с
$startMonth = strtotime('2011-02-20');
$endMonth = strtotime('2011-06-05');
Вам необходимо четко указать, что дата является строковым значением, потому что PHP выполняет вычисления и заменяет 2011-02-20 на 1989 (2011 минус 2 минус 20)
--- добавил ---
Хорошо, еще один вариант (надеюсь, я понимаю, что вы хотите увидеть)
<?php
$startMonth = strtotime(date("01-n-Y",strtotime('2011-02-20')));
$endMonth = strtotime(date('01-n-Y',strtotime('2011-06-05')));
while($startMonth <= $endMonth)
{
echo date('F Y', $startMonth);
$startMonth = strtotime("+1 month", $startMonth);
}
?>