It is possible to prevent some, but not all of these kinds of disasters. While we can assure that passenger count isn't above legal norms, that captains are fully trained, and that people are aware of safety precautions, we cannot always predict what rogue waves or mechanical mishaps might cause.
Ship accidents like the South Korean ship sinking are preventable. However the only way these are going to be prevented is by enforcing harsher safety rules and regulations. Ships sink rarely compared to even a hundred years ago. The only way people are going to have less accidents is by enforcing stricter rules.
We like to think that as advanced human beings we have control over all things. However, an accident is called an accident because it is unexpected and usually not able to be prevented. So boats will sink despite all precautions, just as planes will fall from the sky and not be easily found, even if only once in a while.
It is impossible to prevent all disasters, such as the sinking South Korean ship. Disasters and accidents happen, and while unfortunate, we should remember that it's simply a matter of statistics. Boats sink, more often than we realize, and trying to create ones that "won't sink," has proved to be fallible in the past.