Мутник
а что мне мешает зайти на сайт вида www.site.ru/image.php?image=vasya.jpg ?
Сессия тебе и помешает, которую стартует при открытии index.php Нет сессии - нет картинки.
Теперь, чтобы просмотреть картинки нужно хотябы раз зайти не по прямой ссылке, а на сайт.
Далее, например, index.php открывает картинки, как написал
kvf77 . В нем все идентификаторы (имена файлов картинок, их номера или что-то еще), которые доступны на этой странице записываются в базу вместе с идентификатором сессии юзера. image.php проверяет в базе, доступна ли данная картинка юзеру, который ее запрашивает, и если да, стирает запись из базы и показывает картинку.
Все очень просто и работает на 100%

Открыть картинку напрямую теперь уже не выйдет.