Given a Noisy Curve, Write a Function to Output Likely Slopes
A moving window (with some reasonable window size) is probably hard to beat.  I don't know of any parameter-less solution.  

Another possible approach could be to estimate the slope of the last 10% of the data, and compare this to some threshold.  (So, the 1000th data point uses the average of points 900-1000.  The 2000th data point uses the average of points 1800-2000.  And so on.)  This way, if it does flatten out, then if you continue for another 10% longer, you'll reach a point where the last 10% is all flat and the procedure will likely terminate.  This may do 10% more iterations than "necessary", but that might be acceptable given that in return you get a procedure that doesn't require a fixed window size.

However, choosing a threshold might be a bit tricky.  I'm not sure how to do that in a reasonable way.

Given a bunch of data points, you can compute a least-squares fit for the regression line through those points, and find an estimate of the slope of that line.  You can also compute a confidence interval for that slope.  This will give you a range of plausible slopes.