If you're inviting people to your house, let them know they can spend the night. If you're having a crowd, ask them to bring their own sleeping bags. What's fun for the kids can be fun for the grown-ups. Big parties, such as wedding receptions, should be held at motels or hotels where everybody can spend the night. Putting yourself between the drinker and the driving won't make you terribly popular at the moment, but they always thank you in the morning.
Persuasion beats confrontation.
If a cab is impractical, get a non-drinker to drive the drinker home, or do it yourself, providing you are sober. Put time to work. If you can't get the drinker to a place where they can spend the night, delay their driving for as long as possible. Have the drinker eat, take a nap, take a walk, or have some coffee. Whatever you can do to end further drinking and allow the alcohol to wear off helps, no matter how long it takes.