Your problem is in the ceil() statement. You have:
( $user_sum[ 'sum_hours' ] / $max_sum )
But if you look at where $max_sum is defined, you have this:
$max_sum = $user_sum[ 'sum_hours' ]
Therefore, your ceil() statement basically contains:
( $user_sum[ 'sum_hours' ] / $user_sum[ 'sum_hours' ] )
which, assuming the sum isn't 0, basic math tell us that will always be equal to 1. That's why everyone has the same CSS style, because you're multiplying 1 by the number of levels every time.
Also note that there's no need to run a second SQL query that just contains an aggregate value of all of the data you just retrieved. Instead, just create an array to hold a running sum as you're outputting each member... e.g.:
$sum = array(); // define an array before you start retrieving members
// then, as you process each member in the table, do something like:
if(isset($sum[$user['organization']]))
$sum[$user['organization']] += $user['hours'];
else
$sum[$user['organization']] = $user['hours'];