Count posts by type including drafts and pending posts

It’s not necessary to use $wpdb, a simple get_posts can handle it. Check WP_Query for the full list of parameters.

function count_user_posts_by_type( $userid, $post_type ) 
{
    $args = array(
        'numberposts'   => -1,
        'post_type'     => $post_type,
        'post_status'   => array( 'publish', 'private', 'draft', 'pending' ),
        'author'        => $userid
    );
    $count_posts = count( get_posts( $args ) ); 
    return $count_posts;
}