Generally 4-5 years for me. I’m a “use it till it breaks/can’t do what I need it to do” person.
I don’t play games on my phone. I’m not into photography, and I rarely post photos to facebook, so the year on year camera improvements (whilst appreciated) are of little real world benefit to me.
Once the initial phase of “wow, I’ve got a shiny new toy to play with” wears off, an iPhone becomes…just another iPhone.
IMHO, the latest and greatest iPhone 11/Pro doesn’t do anything ground-breaking compared to previous models. Voice calls, messages (iMessage, Whatsapp, Viber, Facebook messenger etc), web pages, spotify, youtube, banking app, google maps, emails etc etc works equally well on a iPhone SE, 7, 8, X etc compared to an iPhone 11/Pro. Touchid vs Faceid are just different means to the same end (ie authentication). Both systems have their strengths and weaknesses.
The consistency in software across a number of devices (an Apple strength) is IMHO a compelling reason not to upgrade: why buy a more modern device when the current device does what I need it to do, and operates well enough???
Appreciate there are a number of reasons why people upgrade; for me, the cost to upgrade to a new device that does (essentially) the same things as my previous device isn’t money well spent.