I’ve broken the short code for Contact Form 7!

From the codex:

The shortcode parser uses a single pass on the post content. This
means that if the $content parameter of a shortcode handler contains
another shortcode, it won’t be parsed.
http://codex.wordpress.org/Shortcode_API

The codex also provides the solution to your issue, which is to use the funciton do_shortcode()

If the enclosing shortcode is intended to permit other shortcodes in
its output, the handler function can call do_shortcode() recursively:

function caption_shortcode( $atts, $content = null ) {
   return '<span class="caption">' . do_shortcode($content) . '</span>';
}

So, in your case you would need to edit the members function to include the form shortcode in it. Probably something along these lines:

function member_check_shortcode( $atts, $content = null ) {
     if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
        return $content . do_shortcode([contact-form-7 id="26" title="Submit your work"]);
    return '';
}`

If you need to change the form ID or title on the fly, you could pass those parameters via the members shortcode.