Bueno lo he conseguido gracias a un codigo viejo de mi IDOLO GatorV... aca coloco el resultado para las personas que tengan dudas parecidas.
   Código PHP:
    <?php
 
$conexion = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('prog_db');
    
$sqlQuery = mysql_query("select * from tbl_tipo_perfil as perfil inner join tbl_tipo_sub_perfil as subperfil ON perfil.tp_codigo = subperfil.tp_codigo", $conexion) or die(mysql_error());
 
$categoria = "";
$categorias = array();
$pos = 0;
while ($row = mysql_fetch_object($sqlQuery)){
    if($categoria != $row -> tp_nombre){
        $categoria = $row -> tp_nombre;
        $pos = array_push( $categorias,  array( $categoria, array() ) );
    }    
    $categorias[$pos][1][] = array( $row->tsp_codigo, $row -> tsp_nombre );
    
}
foreach ($categorias as $categoria)
{
    if( !empty( $categoria[0] ) ) {
           echo "<h1>" . $categoria[0] . "</h1>";
    }
    if (count($categoria[1]) > 0)
    {
        echo "<ul class='sidemenu'>";
        foreach ($categoria[1] as $subCat)
        {
            echo "<li><a href='index.php?mod=categoria&categoriaID=" . $subCat[0] . "'>" .
                $subCat[1] . "</a></li>";
        }
        echo "</ul>";
    }
}
?>