I think the idea is that people who keep an iPhone for four years are less likely to spend money, and vendors aren't going to worry about selling to such people.
I'm sure that's true. People who change their phone often are likely have more money and so more likely to spend it on software as well as hardware. Certainly my gripe is on the software side, but whether it's purely with the App vendors isn't clear to me. It seems plausible that Apple is updating iOS in a way that makes backward compatibility difficult. It's in their interest to do this since it drives hardware sales. Given the high adoption rate of newer iOS releases and the apparent backward compatibility issues these create, it may be that App vendors just aren't in a position to support older versions of iOS. Their hand is forced to a degree.