The Presentations package has a routine FactorOut that is useful here. The trick is to pull a "factor" out of an expression and then protect the result so that Mathematica won't simplify it back.
FactorOut[factor, quotientfunction : Indentity, factorfunction : Identity][expr] will pull factor out of expression and write the result as factorfunction[factor] quotentfunction[Expand[expr/factor]].Factor would not even have to be in expr. The functions, if not Identity, would most commonly be HoldForm.
How can I get mathematica to bring a factor inside a square root? For instance a Sqrt(1-(b/a)^2) -> Sqrt(a^2-b^2) (if a is real and a > 0). Also, how do I get Mathematica to perform the operation in reverse?