Deberías tener acceso a otras carpetas aparte de la que tienen acceso los usuarios. Seguramente en tu hosting de pago, tienes wwwroot con todos tus ficheros, y una carpeta llamada de otra forma, al mismo nivel que wwwroot para tus bases de datos. En tal caso, puedes crearte una tercera carpeta para meter tus ficheros de descarga. Yo lo tengo así, y aplicado de esta forma:
1.- Login usuario/password en asp, que dan acceso a todos los ficheros de descarga. Esto mismo se podría hacer dando permisos a uno u otro fichero, y no a todos, como es mi caso.
2.- Archivos colocados fuera de wwwroot, con lo que aun sabiendo que por ejemplo están en una carpeta llamada "descargas", por mucho que pongas en la barra del navegador "www.tusitio.com/descargas/fichero-1.zip", no se descargará nada, pues no existe esa carpeta, ya que "descargas" está fuera de wwwroot (solo lo que hay dentro de wwwroot es a lo que se puede acceder desde
www.tusitio.com).
3.- Para complicarlo un poco más, uso también un include con una función que no recuerdo de donde la saqué (creo que no es la de Epa2 que hay en las faq este foro), donde te renombra el fichero. Si el fichero se llama "fichero-1.zip", el usuario se lo descarga, pero con el nombre de su usuario logueado (su session). Ej: "Pepito-1.zip", "Pepito-2.zip", etc... De tal forma que el usuario se descarga fichero-1.zip, pero con su nombre (como si fuera un fichero personalizado, solo para él, lo cual queda de coña, ya que el usuario "flipa", porque se cree que tienes almacenados tantos ficheros como usuarios registrados tienes

). Obviamente también tengo un contador de descargas para cada fichero bajado.