if you go by hourly rate you really have no idea what it will cost in the end. A good programmer at $100/hour, can get the whole thing done in a week. A crappy programmer at $20/hour will take a year, and it'll cost you 3 times as much.
You really can't know how long it'll take, since most people will overpromise and underdeliver. At least if its a fixed cost, you don't lose any extra money for someone else being lazy
I've never yet seen fixed price work well, and I think on something of this size it's doomed to fail. The biggest problem is defining the scope which is almost impossible to do in any detail at the beginning of a project.
Instead, I'd recommend either fixed price for small, bite sized tasks, or (as per my current contract) a weekly rate until completion. I work on rapid turn-around, so the client almost always knows exactly where the project's at and how it fits with their requirements. Of course a precondition of this is a decent level of trust on both sides, and a client who's not a pain.
Fixed fee projects are similarly fraught with danger. There are two scenarios:
1) The client over-pays due to developer over-bidding. (In relation to the time it took him to complete the project.)
2) The developer over-works due to under-bidding.
Neither is particularly advantageous for the client, as a developer will not be as responsive to a client's needs if he or she is working towards a minimum feature set.
A developer can make a reasonable estimate based on clear goals. If requirements change (as they inevitably do) the developer will be compensated accordingly. Similarly, if the project is finished in less time than expected, the client will reap the benefits.
You really can't know how long it'll take, since most people will overpromise and underdeliver. At least if its a fixed cost, you don't lose any extra money for someone else being lazy