Background image not showing up

You did not create your header.php properly. You did not include HTML doctype declaration and head section.

So here is your header.php

<!doctype html>
<html <?php language_attributes(); ?> class="no-js">
  <head>
    <meta charset="<?php bloginfo('charset'); ?>">
    <title><?php wp_title(''); ?><?php if(wp_title('', false)) { echo ' : '; } ?><?php bloginfo('name'); ?></title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="description" content="<?php bloginfo('description'); ?>">
    <link rel="stylesheet" href="https://wordpress.stackexchange.com/questions/169158/<?php echo get_template_directory_uri(); ?>/style.css" media="all" />
    <?php wp_head(); ?>
  </head>
  <body <?php body_class(); ?>>

    <div id="avinash">

      <header class="firstclass">
          <h1><a href="https://wordpress.stackexchange.com/questions/169158/<?php home_url(); ?>"><?php bloginfo('name'); ?></a></h1>
          <h2><?php bloginfo('description') ?></h2>
      </header> 

      <nav class="mythirdclass">
          <?php wp_nav_menu(); ?>
      </nav>

    </div>

And this should be your footer.php

    <div class="mysecondclass">
        <footer class="asampleclass">
        </footer>
    </div> 

    <?php wp_footer(); ?>

  </body>
</html>

Now also make sure that you have included header and footer in your index.php and other theme pages and templates.

EDIT

It’s working. only issue in style.css with image file path. Should be only honey.jpg without / if it’s in same directory.

body {
    background: url('honey.jpg') no-repeat top left;
}