I don't shoot weddings and only deal with corporate clients, so this may or may not be a workable strategy for you, but here is what I do.
It is advisable for me to keep the images as long as they seem likely to make me money. The first 2-4 years I get very decent income from the usage sales alone. But I find that after 5 years, there is little residual income. So my goal is to have the images available for 5 years, but after that I would only want to keep images that could have long term significance.
The reality is that disk space is cheap. Its far easier to pay a few hundred dollars to add additional storage, than it is to take the time to cull the images from previous shoots to separate the ones I really want long term from the short term. So, I've kept it all except the losers.
When I process a shoot, I mark the losers as rejects. I'll keep the shoot on my live working drive for about 6 months. When I hit 6 months, I delete the rejects, and archive the shoot to my archive drives (2 on-line copies, 2 off line copies).
In my terms and conditions, I clearly state that I backup all images, but there is no guarantee of their future availability and it's the clients responsibility to backup the files in accordance their own corporate backup strategy. This is further stated in a read me file in the FTP download, or on the disk jacket if delivered on disk. But unless disaster happens, chances are they will always be able to get their final selected images from me.