So the I think the answer to your first question is that you need to set the cutoff parameter (truncation error cutoff) to be larger. If you set the cutoff (at least in your later sweeps) to be, say, 1E-8, then at some point once the maxdim is large enough it will stop growing, because an accuracy of 1E-8 has been reached. For 1d systems this happens usually when the dimension reaches a few hundred. For 2d systems it depends quite a lot on the Ny system size.
But if you set the cutoff very small, say 1E-12, then basically the bond dimension will always saturate the maxdim that you set, no matter how large (essentially).
But I still don't understand your problem totally. If the problem is that you are finding your last maxdim isn't high enough, can you not just set DMRG to do many sweeps (say 20 or 30 sweeps) and then set your maxdim to keep increasing, say exponentially quickly, while keeping a reasonable cutoff (I'd suggest 1E-8 unless you want very high accuracy). Then eventually you should get an accurate energy because you are allowing the bond dimension to grow to very large values in the end.
Then if your DMRG calculation is still running but has already converged, you can always tell it to exit early using this technique: http://itensor.org/docs.cgi?vers=cppv3&page=formulas/stopping_dmrg
I would recommend starting with smaller system sizes to do short-time studies of what bond dimensions are needed to reach good accuracy. Then you don't have to do as many calculations on large systems which can take a lot of time.
Finally, the answer to your question about obtaining the max bond dimension of an MPS after DMRG is finished is that you can use the maxM function. So just like:
auto max_m = maxM(psi);
for some MPS psi.