Con sesiones sería algo tipo:
 
en tu página principal que llama a las otras ..  
 Código PHP:
    <?
session_start();
$_SESSION['paso_por_donde_yo_quiero']=TRUE;
<?
resto de tu código actual ...    
  Y en las otras págianas que no quieres que sean accedidas directamente:  
 Código PHP:
    <?
// El session_start(); ya estaría iniciado en tu script "padre" .. Si se llama directo .. ni se accederá a $_SESSION por ende no existirá y se redireccionará hacia tu página que indiques (puedes usar rutas [url]http://www.tal.tal[/url] por si llamasen al script desde otros sitios ...
if (!isset($_SESSION['paso_por_donde_yo_quiero'])){
header ("Location: index.php");
exit;
}
?>
resto de tu código actual ...   
  
También podrías jugar con la variable de servidor HTTP_REFERER para ver si llega desde otra página (incluso de tu index.tal ..) o PHP_SELF y ver en que página está .. Pero, más seguro usar sesiones (o cookies como comentó CHILENOCES). 
Un saludo, 
PD: El SID (identificador único de sesión asumo que se propaga por cookies y que se usa un navegador que acepte cookeis. PHP versión 4.1.0 en adelante requerida por el acceso y uso de los arrays superglobales.