It very much depends. I’ve finished 3 seasons with session counts 11, 16, and 9. I’m also in two ongoing seasons that are at 3 and 9 sessions and both feel about half over, plus a third ongoing season that’s 5 sessions in but feels like we just barely started. All my games typically play 2.5-3hr sessions.
I don’t plan out long term story at all (just factions’s current goals), so we wrap up seasons whenever feels right. Typically that means not 100% of things have been wrapped up, but most main things have been more or less back-burnered. I had a season end with the crew still at war with the Red Sashes and with a full 4 wanted stars + more than max heat, but the main conflict with Scurlock and the Crows had been wrapped up, so we called it.
End of season montages ala The Wire can really help with situations like this, and you can wrap up a ton of loose ends. In the above season’s closing montage, we had a PC and a major ally NPC go to jail, the crew’s primary cohort disbanded / was taken over by a crew contact turned nemesis, they lost two pieces of turf, and a PC from a different game in the same shared Doskvol got added to the crew. Big stuff! Those wanted stars had better count for something.
When it comes to predicting or prescribing a season ending, if I feel like momentum seems to be building to something, I’ll try and nudge things towards that. Like if the PCs have established one main rival, I’ll plant a flag on “when you have a final confrontation with that rival, the season is over regardless of what else is going on.” For example, had a season where the PCs really didn’t like Lord Strangford (he was the Spider’s dad), and they knew he was throwing a Unity Day gala in a week. They’d already done a bunch, and it became clear to everyone at a certain point that whatever went down at that gala, it was definitely going to be the season finale.
I also played in a game of A Nocturne where we just said ahead of time “this campaign will be a session 0 + 4 sessions of game play.” That worked out well! Everyone knew how deep they could expect to get, and they knew that any plot lines they wanted to introduce or explore should get wrapped up within the given amount of time. If you can feel yourself burning out, I think there’s no shame in doing what you’ve been doing and setting an end date of “3 sessions out, regardless of what’s happening then.”
Could also experiment with a longer but still pre-set amount of time. If you’re consistently getting bored around session 12, just tell people ahead of time “this game will run 12 sessions with an option to extend 2 more by unanimous consent. Plan accordingly.”