I wonder if the problem is not cultural or if there just isn't a technical solution we can agree on. mindslight mentioned wipe(1), but i don't think it's aligned with the same goal in mind, and it seems to be tied down with many complications (http://wipe.sourceforge.net/).
I guess the basic question is- should users be entrusted to permanently delete anything? rm is probably my third or fourth most-used commands because it is so fast and easy. It does exactly what it should- get rid of shit you don't need anymore, and very quickly. For example, I use templates to generate web applications and when I test new templates I will frequently want to get rid of the auto-generated one I just created. Without rm this would be an incredible pain in the ass or at least take more time and storage than it should. I like keeping the core strictly utilitarian and leaving the layers of safety to be built by bureaucracies after it has shipped.
Well-intentioned developers add a bit here and tad there and pretty soon you have 400% of what you need to perform your daily tasks to protect yourself from 0.001% occurrences. Which is actually ironic because I remember DHH stating that he was vehemently opposed to type-casting. Anyway, I think it is best to leave it up to end-users to build their own solutions and plug-ins for desired functionality but to leave these types of catch-all's out of the core product.