Без системы входа в систему вы можете ограничиться одной загрузкой на IP-адрес в фиксированное время. Я верю, что это то же самое, что делает Rapidshare.
Самый простой способ реализовать это - записать время, когда IP-адрес начинает загрузку, либо в формате простого файла, либо в базе данных. Если время, прошедшее с предыдущего времени загрузки, меньше необходимого времени ожидания, перенаправьте пользователя на страницу с ошибкой. В противном случае перенаправьте пользователя на ссылку для скачивания.
Изящный счетчик - это просто уловка Javascript. Вы можете легко написать один, используя таймеры Javascript, но это только для галочки. Фактическая возможность загрузки всегда должна определяться на стороне сервера (в вашем случае на PHP).