Tabelle o div? Perché i div sarebbero meglio. Più moderni, funzionali e crossbrowser.
Per le tabelle basta modificare il ciclo aggiungendo una riga per ogni record:
Codice PHP:
echo '<table>';
while (
$row mysql_fetch_assoc($query) ) { 
    
sscanf($row['mese_anno'], '%4d%2d'$anno$mese); 
    if (
$row['mese_anno'] != $mese_anno){ 
        
$str.= '<tr><td>[b]'.$mesi[$mese].' '.$anno.'[/b]
'

        
$str.= $row['titolo'].'
</td></tr>'

        
$mese_anno $row['mese_anno'];  //questa riga è inutile. Dove la riutilizzi?
    

    else { 
    
$str.= '<tr><td>'.$row['titolo'].'
</td></tr>'

    } 

echo 
'</table>'