posts_nav_link() not working on index.php

You are missing the paged= paramter.

$myquery = new wp_query('cat=-41&paged=' . get_query_var( 'page' ));

Codex Note – You should set get_query_var( 'page' ) if you want your query to work with pagination.

Update –

Drop in this code in your theme’s functions.php and remove all that your customization from top of loop. (7 lines)

function wpse61695_exclude_cat( $query )  {

    // making sure it runs on home page and on main query
    if ( $query->is_home() && $query->is_main_query() ) {
    
        $query->set( 'cat', '-41' );
    }
    return $query;
}
add_action( 'pre_get_posts', 'wpse61695_exclude_cat' );