I implemented 2 major subsystems that I later realized I could simplify the system by throwing out.
My product is very technical so there was probably about four months trying to make things work and learning what did and did not work.
I had to learn about 75% of the development tools and languages I was building with.
I don't like the idea of releasing half baked, half working software that represents half of my vision.
I had to fit the project in between my money paying job, family, friends, life.
I had lots of great ideas and the fun bit about developing software is when you get to implement those "wow it would be cool if...." functions.
I just want to fix bugs after the software is released, not just be starting on the code.
I want the software to be so far along that it would cause a competitor to think twice about copying.
I think software should be great, not just barely functional, so I added lots of things to polish and make it awesome.
Near the end of the build I realized I could make a major leap forward so I redesigned a key area of the UI.
I built as much of it as I could before release because after release its MUCH harder to add new features.
There you go, that's why it took me so long.