I've absolutely experienced this. It's quite possible that I've got it even worse than you. I can never decide what kind of character I want to play and, even if I settle on one for a moment, it won't be long before I change my mind. There's a good chance I won't even make it to the end of the session before I want to play something different!
So how do I deal with it?
For a variety of reasons, I prefer to GM more-or-less exclusively. And one of those reasons is because, no matter how many character ideas I may dream up, I get to play them all, and I can switch off easily whenever I want to.
I realize that you're currently looking for ways to rein yourself in and stay focused on a single character, but that isn't the only possible solution to your problem. You can also embrace your creativity, move over to the GM's chair, and not have to choose just one.
As a lighter-weight alternative to GMing, another option along the same lines would be to see if your group is interested in "troupe-style" roleplaying, as pioneered by Ars Magica. The core idea is that each player makes multiple characters (2 or 5 or however many your group wants) and then chooses a character to play for each session or adventure. This also helps to avoid "why is my tanky paladin a part of this stealth infiltration team?"-type problems, since you can choose the most appropriate character, or the one who would be most interested in the objective, each time instead of trying to shoehorn the same character into every story.
How did you handle XP distribution with multiple characters? Was that basically a penalty for doing this (in that you levelled more slowly across several characters?)
When I've done this in D&D-type games, it's been in West Marches-style campaigns, where it's an explicit expectation that characters will advance at different rates, based on which players show up more often and which characters a player chooses to run more frequently. I have also seen web pages describing troupe-style play in D&D in which the character you play in a given session receives their normal XP award and then you also receive an equal number of XP to distribute to any of your inactive characters; in this model, you could have two characters always advancing in lockstep at full rate, or spread the XP across more characters at the cost of the less-played ones advancing more slowly. And I've talked to people from groups which don't worry about it and give full XP to all characters regardless (or ignore XP entirely and advance all characters based on milestones) so that everyone is always the same level.
In any case, I would never consider it a "penalty", because I don't find it important for all characters to be the same level, but I realize there are others who do. Which method of handling XP/leveling when players switch off between multiple characters will vary from group to group depending on their preferences.
And how did the DM handle the 'switching'? DId you have to say you were using X for Y sessions or did you pick and choose before each session?
Also as part of the "West Marches" model, we ended every game session in town or some other "safe" location which all of the characters (active and inactive alike) could be presumed to be at. When the next session started, the players would then choose which characters to play that night.
Of course, for groups who find it too restrictive to have to end every session in town, you could also choose characters per-adventure rather than per-session, allow switching whenever active and inactive characters are in the same location, or adopt any of the typical methods used to deal with characters belonging to players who are absent on a given night (assume all the inactive characters are there, but just not in the spotlight; a blue bolt drops from the sky and suddenly Alice is standing there instead of Bob; etc.).