En realidad deberias ordenar por año y luego por mes... o sea... si tenes regitros del mes de agosto.. primero deberias mostrar los del año 2007, luego los del 2006 etc (si los ordenas descendentemente)
Código:
$sql = "SELECT * FROM tabla ORDER by YEAR(fecha) DESC, MONTH(fecha) DESC";
$r = mysql_query($sql);
while($row = mysql_fetch_array($r)){
print_r($row);
}
Saludos