NSDates представляют собой момент времени с 01.01.2000 00:00 UTC. Так что все эти даты имеют временные составляющие. -compare:
сравнивает дату и время.
Предположительно, вы действительно хотите проверить, находится ли выбранная дата между 6.06.2011 00:00 и 06.09.2011 00:00. Также вы, вероятно, хотите, чтобы дата 6/6/2011 00:00 считалась как в диапазоне. Так что вам нужно что-то вроде
NSComparisonResult compareStart = [date1 compare: selectedDate]; // date1 is 6/6/2011 00:00
NSComparisonResult compareEnd = [date2 compare: selectedDate]; // date2 is 9/6/2011 00:00
if ((compareStart == NSOrderedAscending) || (compareStart == NSOrderedSame)
&& (compareEnd == NSOrderedDescending))
{
// date is in the right range
}