here is a function based on [WolframAlpha[]](http://reference.wolfram.com/mathematica/ref/WolframAlpha.html?q=WolframAlpha&lang=en)

    ShowSteps[exp_] := 
      WolframAlpha[ ToString@HoldForm@InputForm@exp, 
      {{"Input", 2}, "Content"},  PodStates -> {"Input__Show steps"}]

    SetAttributes[ShowSteps, HoldAllComplete]
for limits use

    PodStates -> {"Limit__Show steps"}
for integration

    PodStates -> {"IndefiniteIntegral__Show steps"} 

**Update:**

WolframAlpha [changed output][1].

Now ShowSteps should work with:

    ShowSteps[exp_] := 
      WolframAlpha[ToString@HoldForm@InputForm@exp, 
      {{"Input", 1}, "Content"}, 
       PodStates -> {"Input__Step-by-step solution","Input__Show all steps"}]

     SetAttributes[ShowSteps, HoldAll]

![enter image description here][2]

**Update - Nov 2014**

    ShowSteps[exp_] := 
     WolframAlpha[ToString@HoldForm@InputForm@exp, 
     {{"Input", 2}, "Content"}, 
     PodStates -> {"Input__Step-by-step solution"}]
        
    SetAttributes[ShowSteps, HoldAll]

  [1]: http://blog.wolframalpha.com/2012/09/26/introducing-expanded-step-by-step-math-solutions/
  [2]: https://i.sstatic.net/Rz7x4.png