When I was helping a friend interview candidates for his startup, he explained to every interviewee after asking this question that the goal was simply to find out if you had self knowledge. Everyone has strengths, everyone has weaknesses. Do you know what they are, and more importantly, do you know how to deal with them?
We were looking for honesty first. Canned answers got a set of follow-up questions about examples and details that usually showed they had no idea what "too detail oriented" actually meant as a weakness. People who couldn't articulate what they weren't good at had a pretty awkward moment. We'd eventually move on, but that stuck around.
The best way to answer is to talk about what you're trying to improve on. Even if you're good at everything, there must be things you'd still like to get better at. If not, you're showing that you're stagnant -- not something an employer of any size wants to hire for, but especially not startups.
I personally don't feel these cliché questions that most employers ask provide any insight whatsoever on the candidate. In my book the best way to be a judge of talent is to put them on a 1-2 week trial project (paid, of course). Nothing better at letting an engineer shine or bomb when the rubber meets the road.
If you do get asked this question, it's probably best not to respond with a cliché answer like "I work too hard" :)
From a psychological perspective, it's always best to be human -- you could tell them a genuine skill that you are working to improve. This shows you are mature and have leadership qualities.