I will second the epgy suggestion -- http://epgy.stanford.edu/
they do a good job (good not perfect) of not making a child repeat too often/work through too many problems if they are able to handle the initial group of problems for each lesson. My son did beginning algebra and enjoyed it although he petered out at the end due to other obligations. It boosted his confidence tremendously, also.
I have to look at Khan and Alcumus!