Hai capito cosa fa, ma non trovi qual'è il problema?

Tu includi prima i file delle traduzioni, e poi controlli il valore passato in post.
E poi c'è un altro problema, nel form imposti la stessa lingua che stati usando.

Prova così


Codice PHP:

<?php 

if (!isset( $_SESSION['lingua'])) 

// verifica che la variabile $_SESSION non sia vuota 

$_SESSION['lingua'] = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2); 
//seleziona il codice relativo alla lingua di default, nel mio caso è it 
}  



<?
php 
if(isset($_POST['lang'])) {
if(
$_POST['lang']=="it)
$_SESSION['lingua'] = "en"; 
else
$_SESSION['lingua'] = "it"; 
}

?> 


if (
$_SESSION['lingua'] == "en") 

include('include_lingua_en.php'); 

if (
$_SESSION['lingua'] == "it") 

include('include_lingua_it.php'); 
}  
if (
$_SESSION['lingua'] != "it" && $_SESSION['lingua'] != "en") 

include('include_lingua_en.php'); 
}  

?> 



<?php 


<form enctype=\"multipart/form-data\" name=\"form\" action=\"
$PHP_SELF\" method=\"post\"> 
  <input type=\"hidden\" name=\"lang\" value=\"en\"/> 
<input name=\"ENG\" type=\"image\" src=\"flag_eng.png\" alt=\"ENG\" title=\"ENG\" width=\"78\" height=\"38\"> 
</form> 


?>