Sign-up wizard structure seems too repetitive
You can make this DRYer if you can assume that : 


You keep naming each step stepx
No other variables in $scope start with step


In that case you could use a function that sets in a first step the right scope active and then the other steps inactive:

function updateScopeSteps( $scope , step )
{
   //Default to step1
   step = step || 'step1';
   //Set step
   $scope.step = step;
   //Activate step
   $scope[ step ] = {active: true, done:false, todo: false};
   //De-activate all other steps
   for( var name in $scope ){
     if( name.substring(0,4) == 'step' &amp;&amp; name != step ){
       $scope[name].active = false;
       $scope[name].todo = true;
     }
   }
}