The original purpose of the electoral college was to insulate the office of the president from a populace that could be too easily swayed by personality and demagoguery. We are arrogant if we imagine our modern society to have risen above our predecessors in this respect. We can see today that voters are too often ignorant and too often swayed by emotional and other fallacious appeals.
Adding a buffer layer between voters and the presidency forces us to choose electors who can be expected to know or learn more than the average apathetic voter about each presidential candidate. Unfortunately, states have passed laws to frustrate that purpose, making the electoral college seem worthless and ready for the junk heap of history.
Rather than toss out the whole electoral college, we could reform it so that it could accomplish its original purpose. We were supposed to choose politically savvy locals that we knew personally. They in turn were supposed to know the candidates personally or at least see through the bull to choose a good president.
First, don't allow states to bind electors to a particular candidate. Such binding short circuits the buffer that the Constitution so rightly installed. One simple way to prevent such binding would be to require a secret ballot in the electoral college. If nobody knows how any individual voted, then it becomes very difficult for anyone to hold an elector to a commitment.
Second, and here's a really slick alteration: Have the electors choose the president and vice-president from among themselves. This would make every elector a candidate, similar to a parliamentary system. [However, it would not combine legislative and electoral functions, and it would not subject Presidents to votes of confidence, so we would still avoid parliamentary volatility and instability.] Nobody would know for sure who the real candidates would be until after the election. Therefore, voters would really be forced to evaluate and choose their own favorite sons (and daughters), entrusting them to either be or select a good president.
Finally, use approval voting at all stages. With approval voting for electors, the two party stranglehold on power would evaporate. With approval voting in the electoral college, there would always be a winner, so we could eliminate all the rules about sending the election to the House of Reps. [In fact, I think that all elections at all levels should use approval voting.]
PS: In the case of a vice-presidential vacancy, remaining electors could reconvene to select a replacement, again from among themselves.