Hi @rsm:
There are probably better ways, using the WordPress API, but since I know SQL so well this immediately came to mind:
function total_published_authors() {
global $wpdb;
$sql =<<<SQL
SELECT COUNT(*) AS total_published_authors FROM (
SELECT DISTINCT
{$wpdb->users}.ID
FROM {$wpdb->users}
INNER JOIN {$wpdb->posts} ON {$wpdb->posts}.post_author={$wpdb->users}.ID
WHERE
{$wpdb->posts}.post_status="publish"
GROUP BY
{$wpdb->users}.ID
) x
SQL;
return $wpdb->get_var($sql);
}
If I come up with a better way I’ll post it too.