You fail to initialise $output [noparse]🙂[/noparse].
Whether it's accurate or not ... well, one criterion would be that if as of now a certain date was "4 months, 2 weeks, 2 days, 10 hours, 38 minutes, and 42 seconds ago" (personally I'd prefer the result to not be formatted so that I could do that myself without having to tinker with the function...) then you would expect that adding 4 months, 2 weeks, 2 days, 10 hours, 31 minutes, and 27 seconds to the date in question would bring you back to now.
$then = strtotime('September 2, 2010 4:20 PM');
$now = strtotime('4 months', $then);
$now = strtotime('2 weeks', $now);
$now = strtotime('2 days', $now);
$now = strtotime('10 hours', $now);
$now = strtotime('38 minutes', $now);
$now = strtotime('42 seconds', $now);
My testing gives a result that's off by ten days (less an hour, which would have been caused by crossing a daylight saving boundary).