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.