Lo prometido es deuda :P
 
Es un ejemplo simple pero lo importante es que entiendas como funciona 
Tengo esta estructura de directorios 
/img
/public 
Public es el root directory, es decir que es lo que pueden ver los usuarios de nuestro sitio, img no esta a su alcance 
el htacces es algo asi  
 Código PHP:
    RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L] 
    
  El script php es  
 Código PHP:
    // si entro a http://misitio.com/imagen.jpg, $uri sera /imagen.jpg
$uri = $_SERVER["REQUEST_URI"];
 
// si hay algun parametro pasado por GET lo eliminamos
if (strpos($uri, "?") !== false) {
    $uri = substr($uri, 0, strpos($uri, "?"));
}
 
$rutaImagen = "../img".$img;
 
/* en este ejemplo el filtro para poder ver o no una imagen consiste en pasar este parametro por GET, en tu caso debes poner que este logueado o no */
 
$estaLogueado = $_GET["logueado"] == 1;
 
if($estaLogueado) {
  if (file_exists($rutaImagen)) {
    /* lo mas "importante", a lo que le tienes que prestar atencion es a las proximas 2 lineas, el resto lo puedes implementar de mil formas diferentes */
    Header("Content-type: image/jpeg");
    echo file_get_contents($rutaImagen);
    die();
  } else {
    die("La imagen que buscas no existe");
  }
} else {
    die("No estas logueado, no tienes acceso a las imagenes privadas");
} 
    
  y esto es todo =) 
cualquier cosa que no entiendas aqui estamos :P 
Saludos!