It depends on what you need:
- High-fidelity vs low-fidelity
- Do you need to create mockups in realtime (with your users)
- Do you need "sketchy" look
- Who will use it (only programmers or civilians too)
- Mockups of what: web, desktop, mobile
- Only handful of "main" screens/pages vs dozens of scenarios with hundreds of screens
- etc etc
Here is the pretty comprehensive list of many mockup tools, both free and commercial:
http://c2.com/cgi/wiki?GuiPrototypingTools
Back in 2005 I've created my own tool (MockupScreens, it's on the above list and it's pretty popular) specifically for non-programmers to be able to prototype realtime in a meeting, and to quickly get something close to a spec.
Bottom-line is that for different uses, some tools are more appropriate than others...