On a side-note, even though you don't mention having analysis paralysis at your step 3 & 4, something that held me back during pre-development was always trying to decide which language to use and which libraries/frameworks to go for. I've heard this from my peers as well, so I thought I'd mention that as well.
My solution to this problem is to treat the language and tools I'm most familiar with as if they are the only ones that exist in the universe. I learned this from retro game hackathons that apply artificial limits on color palette, sprites, available memory size etc. For some reason, I'm much more creative when a set of these decisions are already made, in this case by my past-self.
When I want to just play, learn, experiment with things I can choose whatever I want. But when it's building a product by myself, then I always apply plenty of artificial limitations from day 0.