In this year's NCAA tournament we've seen an array of upsets, the reason being that the smaller schools are catching up to the bigger ones.
It's not because they are getting better, rather, the big schools are getting worse, primarily because many of them can keep a team together. So many players are leaving after their freshman year of college and heading to the NBA.
My solution isn't that complicated. The NCAA should do what MLB does.
Let players enter the draft after high school if they want, but if they decide to go to school, they can't enter the draft until after their junior year.
Some players like LeBron James and Dwight Howard are NBA ready right after high school, and they shouldn't be forced not to go if they don't want to. In order to encourage those players to not only attend, but graduate, college, the NBA should make the guaranteed money that a rookie contract offers higher for players who graduated college and even higher for players that spent three years in college as opposed to none.
This might encourage many of the players to go to school. If a player does decide to go to school but then feels like they are being held back, then there would be an option for players to leave after their sophomore year, but only if they've showed that they are mature enough and NBA ready. This would be done by making sure these players have no off-court issues and making it so that they must be either first or second-team All-American, to show that they are being held back by the level of competition.
A solution like this would improve the college game, probably improve the NBA game, and give players the option to enter the draft after high school if they really want to. I think that if they don't change the current system, the NCAA will suffer the consequences.