I'm building an app and found that thinking about the API from the get go made me design the app better. Why? Because the interface I'm building is just one example of how to interact with the API. The API is better and I understand my app better.
Also, check out Joshua Bloch's excellent presentation on how to design a good API: http://video.google.com/videoplay?docid=-3733345136856180693. One interesting point he makes is that you should avoid exposing a public API until you've successfully built three clients for it.