I agree that any vacation is a gamble, however a cruise is so much more because you can back out of most hotels right up to the date you are to check in. Non-refundable airline tickets really are refundable with a penalty.
But a cruise is different than all of those, because you can recoup much of your losses (if not all sometimes) on many land based vacations. But you lose everything if it is a cruise.
Don't get me wrong, I do understand why it has to be this way, but I think the cruiselines could show some understanding in some circumstances. I can't answer where to draw the line, but there is one somewhere.