Include Drafts or Future posts with count_user_posts?

This will do what you want:

$args = array(
    'author'      => $curauth->ID,
    'post_status' => array(
        'publish',
        'pending',
        'draft',
        'future'
    )
);
$posts = new WP_Query();

$post_count = $posts->found_posts;

It will include drafts, pending posts, published posts, and future posts. There are more you can set, such as trashed posts, and private posts, but that didn’t seem to follow the intent of the question. This method will include custom post types as well as the builtin post types, so additional filtering may be in order.

Docs: WP_Query