There have been several SDN threads trying to solve this problem.
One option is to do away with the match altogether. Let programs and applicants simply interview, offer, and figure things out for themselves. Although this might solve some problems, it creates others. First, programs would have an incentive to fill slots as quickly as possible -- hence if your interview would be in Jan you might be contacted now and told that all slots are full, don't bother coming. This in fact happens at some programs that prematch their spots -- SDN threads like this tend to show up in early January. Second, the "best" students might get spots up front, but those in the middle and those who are weaker might need to wait a long, long time to actually find a slot, waiting for others to decline spots etc. I have seen fellowship apps without a match -- it can be ugly and bad.
Another option is to create an "early decision" type process. If you know exactly what your #1 will be, you can apply early decision and hence avoid all the interview time/expense. This might be very handy if you have a spousal/family issue that limits your options. I think this could work -- as an applicant you could only apply early decision to a single program, and each program could accept as many early decision applicants as they want (or it could be limited to a certain % of slots). But this would only benefit a small percentage of applicants, you would need to somehow avoid the "please look at my application and tell me if I should apply early decision" type discussions, and might actually add a bunch more stress to the system rather than less if people are rejected for early decision.
If you simply allow anyone to prematch, the whole match will degenerate. Although the match seems crazy at times, I honestly feel it's better than any alternative I've seen discussed.