Multi language site with same content

Storing it in a session would certainly be possible, but is not necessary at all.
Unless you’re looking for a way to not include the query string in subsequently visited URLs. Here I’d rather go with a cookie than a session, since WP already relies on cookies and does not use sessions. But that’s a matter of personal taste, I suppose.

Anyhow:
In your wp-config.php, you can define WPLANG conditionally like so (wp-config.php is loaded early, but other than that a normal php file like any other):

if ( isset( $_GET['lang'] ) ) {
    define( 'WPLANG', $_GET['lang'] );
} else {
    define( 'WPLANG', 'en_US' );
}

Or, if you’d like to use two-character identifiers for the query parameter and/or make it default to a certain language (here: English) if the parameter is invalid:

$language = isset( $_GET['lang'] ) ? $_GET['lang'] : 'en';
switch ( $language ) {
    case 'de':
        define( 'WPLANG', 'de_DE' );
    break;

    case 'en':
    default:
        define( 'WPLANG', 'en_US' );
}