Here is the solution based on Faysal's code:

    FindMinimum[Null,
     {OptimVariables, initialGuess}\[Transpose],
     Method -> {"LevenbergMarquardt", 
       "Residual" :> residualVector[OptimVariables], 
       "Jacobian" :> jacobianMatrix[OptimVariables], 
       "StepControl" -> {"TrustRegion", "StartingScaledStepSize" -> .1}}]