You are missing <?php endwhile; ?>
before the end of content div.
get_header();
$args = array('post_type' => array('post','media-appearance','members-archive','money-saving-tips','review'),
'posts_per_page' => '20',
);
$this_query = new WP_Query( $args ); ?>
<div id="primary" class="site-content">
<div id="content" role="main">
<?php while ( $this_query->have_posts()) : $this_query->the_post(); {?>
<?php if( has_post_thumbnail() && ($cat == 'budget') ): ?>
<div class="tip-excerpt">
<h1 class="entry-title">
<a href="https://wordpress.stackexchange.com/questions/348791/<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
</h1>
<div class="entry-content">
<a href="https://wordpress.stackexchange.com/questions/348791/<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail', array('class' => 'alignleft')); ?></a><?php the_excerpt(); ?>
</div>
</div>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php // done the foreach statement ?>
<?php endwhile; ?> //ADDED CODE
</div><!-- #content -->
</div><!-- #primary -->
<?php get_sidebar(); ?>