f[ρ_,θ_][{x_,y_}]:=ρ RotationMatrix[θ].{x,y}

Recursion2D[f_,pars:{({_Symbol,_,_}|({{_Symbol,_},_,_}))...},steps:(_Integer|{_Integer,_Integer}),{{xmin_,xmax_},{ymin_,ymax_}},x0:{_,_},options:OptionsPattern[ListPlot]]:=
Manipulate[ListPlot[Drop[NestWhileList[f,x//N,(Plus@@Abs/@#<(10^5))&,1,Switch[steps,_Integer,steps,_List,Last@steps]],Switch[steps,_Integer,0,_List,First@steps]],PlotRange->{{xmin,xmax},{xmin,xmax}},options],Sequence@@pars//Evaluate,{{x,x0},Locator},Deployed->True]
Recursion2D[f_,pars:{({_Symbol,_,_}|({{_Symbol,_},_,_}))...},steps_Integer,{{xmin_,xmax_},{ymin_,ymax_}},options:OptionsPattern[ListPlot]]:=Recursion2D[f,pars,steps,{{xmin,xmax},{ymin,ymax}},{(xmin+xmax)/2,(ymin+ymax)/2},options]

Recursion2D[f[ρ,θ],{{{ρ,1},1/2,2},{{θ,π/10},0,π/4}},250,{{-4,4},{-4,4}},{.5,.5},Epilog->{Red,PointSize[Medium],Point[{0,0}]},AspectRatio->1]