Personally I never delete anything from my product database.
You never know if and when you will want that product displayed again.
Generally I do 2 things.
1.) I have an extra field that determines wether or not the product should be displayed or not. IE.. active or inactive.
2.) I also have a field that will tell me wether or not the item has been discontinued, if so.. which is the replacement item if any.
If the product is inactive, it should not be linked anywhere on your website (I am assuming your site is dynamically driven.)
If for some reason the search engine has cached that page, or someone has book marked it - I simply display an error page.
Something to the affect like - this item cant be found or is no longer available. insert the rest of your verbage here.
For an example of my dynamically generated pages you can check out my site.
www.atdiscount.com
Cheers!
John