Your code will never time out because $login_session will be set so long as the user still exists in the DB.
Store the expiration time in the session. Abstract the code below in a file that you include on every protected page.  
<?php
if(session_status()===PHP_SESSION_NONE) session_start();
//if user supplied login creds:
if(isset($_POST['username']) && isset($_POST['password'])){
    //attempt to login,
    //...
    // if login worked save username and expiration time
    if(...){
        $_SESSION['user'] = $row['username'];
        $_SESSION['exp'] = time() + 600; //expires in 10 minutes
    }
}
//now check access
if(empty($_SESSION['user'])){
    //user is not logged in. show error and exit
}elseif(empty($_SESSION['exp']) || $_SESSION['exp'] < time()){
    //session has expired. show error and exit
}
//session is still valid. Extend expiration:
$_SESSION['exp'] = time() + 600; //expires in 10 minutes
//show protected content