Crowd pleasers (movement, participation, vision, sound, lights) seem to do really well, generally.
There seem to be two directions you can take: solving a problem or being creative. E.g a scheduling app vs an online game. Sometimes being creative is easier to be flashy with. And as long as it's demonstrably technologically difficult, it can win.
Also, I've definitely seen some projects do less well seemingly because the judges didn't realize how impressive they actually were. If you're doing something that's very advanced but correspondingly obscure, you have to be careful to convey that in your presentation!
And, of course, as with any such endeavor, don't be disheartened if you don't win even with a great project. Having something that works at all is great in and of itself, and the judges have to choose from a whole bunch of projects in a very short time, which necessarily means they can't consider any of them too deeply.
Over the past two years, I've noticed that the ratio of prizes to teams at any given hackathon has been approaching 1:2. All that means is that "winning" in the sense of getting a prize is becoming more and more common. It leaves me wondering if the people who are winning these events now are getting the same amount of benefit as the people who were winning when I first started out. Thus, I think the more important question that people should be asking is "How do I get the best experience out of this event?".
I think your writeup did a great job of nailing exactly how to do that:
1. Work with a team with a varied skillset
2. Demoing what you made
3. Work on something you're passionate about
4. Keep things succinct and manageable