Github has this, but better. Instead of just typing delete, you type in the name of the repo you want deleted.
As a UX pattern, however, this should be avoided if possible.
The more common it is to delete something as part of a regular workflow, the less attention you pay when you do it, and no number of confirmation dialogs will resolve that.
99% of the time when I want to delete something, it's intentional instead of accidental, so why should have I have to confirm the action 99% of the time, to potentially save me 1% of the time.
Allowing the user to undo is a much better solution, as even if you confirm something, it's only after deleting it you realise you selected the wrong list to delete, or though you where on the development server instead of production.
And there's no reason this should only apply to destructive actions such as deleting something. GMail let's you undo sending an email (or more specifically, it delays sending the email for a few seconds to give you a chance to realise you sent it to the wrong person, forgot an attachment or realise you're drunk emailing).
I aware that there's additional work involved in developing something to allow you to undo, as well as added overhead, such as how long do you store "deleted" files, how do you undo an action which has since had other actions performed on it etc.
Is there any reason that concept is so rarely used in the web?
Well, there's usually an undo functionality in desktop-like web apps but most CRUD lack that kind of feature.
Aza wrote about this way back in 2007: http://alistapart.com/article/neveruseawarning