This is a problem that I've wrestled with on several client sites. I've come up with solutions that most definitely work but they still cause confusion to the end user who has to maintain the site.
Consider the following: Let's say we're building an image gallery in views using nodes of a custom content type. We want all the images to be nodes to allow the client to easily manage the library. But we don't want visitors to be able to access an image through a direct URL like a normal node; we only want them to view it in the image gallery. If they want to view a larger version, clicking on an image will open up a lightbox.
The way I've handled this before is to make all of the nodes used in the view unpublished. This prevents someone from accessing the node via a URL like www.example.com/photo-1. To give our clients the ability to unpublish items from their view without deleting the item, I use CCK to create my own "Published" flag that I check for in views.
So really, this solution works really well but the problem is when a client makes it to the administrative content page, we get a call asking "why are all these pages unpublished?!". Or worse, they just go in and publish all the items using the standard drupal "Published" option.