We had a similar issue with products that couldn’t be sold online because they were classed as medical devices, but they were available in stores so we wanted all the product info to be available for consumers researching online. We use the “email me when back in stock” functionality on that site, so we didn’t want to just 0 the inventory because that would leave that message showing to consumers when in reality those products are never going to be in stock and available for sale on the website.
The solution we found most effective was to make another theme inside of our store “interface” (Magento’s terminology, not mine--basically app/design/frontend/storeinterface/newtheme). Where newtheme is the not4sale theme. The not4sale theme only contains the template/catalog/product/view.phtml file where we deleted the add to cart code and added a message about finding the products in stores using our store locator. Everything else that theme inherits from the default theme for our store “interface”.
Then in the admin panel we just apply it selectively to the products that are “not4sale”. ADMIN>Catalog>Manage Products. Select a product. Click “Design” tab on the left and apply the not4sale theme as a Custom Design.
It’s been working well for us. Hopefully will work for you too.