One very important point that many software startups seem to miss is this:
Find a problem, and solve it. Don't build a solution and find problems that could fit, and don't solve problems that are solved already.
This seems obvious, but there are many examples of companies whose products failed (or who went under entirely) because they couldn't convince people that they actually needed the thing.
For example, don't make a to-do list app. Don't build a social networking anything; if I had a penny for every "I'm going to make the next Facebook" claim from projects that failed completely, I'd have enough cash to buy Facebook. I'd probably avoid music-discovery apps as well; Grooveshark, Pandora, Spotify, Last.fm and the rest have that market covered. As a general rule, when you get an idea, Google about a bit and see what already exists. Consider testing out whatever solutions you find. If you can't see anything wrong or lacking with them, then you probably won't be able to break into that market unless you've found some shiny new way of doing things that makes it better (or you can match their functionality for greatly reduced prices, perhaps).
I once heard someone say that you should be able to tell a stranger what your product is for without saying "it's like [other product]", and I think that's pretty good advice. If it's like some other product, that might be ok, but don't focus on that. For example, you're not building "something like Mint", you're building "an app to track and manage your finances by doing X, Y and Z". The difference is that you're focusing on the features that you want, and not the features that your competitors have. Of course, you'll want to look at your competitors to work out what features the market wants, but you don't want to fall into the trap of being a copy of an existing product. If you're the same as an older product, then people who use that product might as well stay there, and people who don't might as well choose that product over yours because it's more mature and has all the advantages that brings - they've had longer to fix it, to build up a support base, etc.