Many thought that the first lottery in 1985 was rigged because the Knicks won Patrick Ewing. The league went to a weighted system. When Orlando, the best team to miss the playoffs, won the first pick on a 1-in-66 chance in 1993, they weighted it further.
I would go with a weighted system similar to the current one, but instead of picking three teams for the top three slots no matter their record, you give teams advancement in draft slots. One team gets to move up three slots, another gets to move up two slots, and a third team gets to move up one slot.
For example, let's say in 2010, the Wizards get +3, the 76ers get +2, and the Nets get +1. The draft order would then go Nets, Wizards, Wolves, Kings, 76ers, Warriors, Pistons....
As long as draft position has some relation to win-loss record, tanking will always be a possibility. You either have to get rid of the idea of a lottery, decrease the relationship between lottery odds and win-loss record, or decrease the incentive for finishing worse. I opt to do the latter.