Codice PHP:
<?php
$sql 
"SELECT * FROM tabella_menu WHERE genitore = '0' ORDER BY voce_menu ASC";
$result mysql_query($sql);
$j=0;
while(
$menu mysql_fetch_array($result)) 

    if(
$menu['genitore'] == 0)
    {
        print(
"[url='#']".$menu['voce_menu']."[/url]

"
);
        
$sql "SELECT * FROM tabella_menu WHERE genitore = '".$menu['id_menu']."' ORDER BY voce_menu ASC";
        
$subresult mysql_query($sql);
        while (
$submenu mysql_fetch_array($subresult))
        {
            print(
"- [url='#']".$submenu['voce_menu']."[/url]

"
); 
        }
    }
    
$j++; 
}

?>
Volendo, puoi storare tutto subito in un array multidimensionale, risparmiando le sotto query per i i sottomenu, ma direi che cosi è più semplice da capire (sempre ammesso che sto giro abbia capito cos aintendevi^^).