This is a learnable skill, and one that is IMHO very worth learning.
I also have a tendency to want to just load a whole problem into my head, Think Real Hard, and then write down the solution as quickly as I can. It's a great strategy, when it works. The problem is that it doesn't scale - it sets a limit on the complexity of problems you can attack directly, and it prevents you from working on more than one problem at once.
So what I've found, as I work on more complex problems, is that I really need to adopt all those tactics that back in college I thought were reserved for "lesser" minds. Things like breaking down a problem into chunks and then writing down all the intermediate steps. Adopting a bug database, spreadsheet, or task management software. Thinking about the external impact of a change, and communicating it to other parties. Showing off intermediate demos, and breaking the problem down into a form where intermediate demos are possible. Asking for help from other people.
These are absolutely essential if you want to work on anything that takes more than a month, but the nice side effect is that you then get the ability to work on multiple projects for free. All the problem state is externalized, so if you need to work on something else, you can just drop it, switch contexts, and read your own documents or bug queue to figure out where to pick it up.