My realtor and I were discussing negotiating options recently when purchasing a home, and the comment that he made was this:
"The only thing that determines the value of a house is how badly you want it and how badly the seller wants to sell it."
I think that the same holds true with any negotiation. If they've gone through a long interview process with several rounds of interviewing and are looking for a very specific skillset that you have, you might have a lot more leverage. If you are currently employed you might also have more leverage. If your skills are fairly common and/or you are currently unemployed, you won't have nearly as much leverage. In short, every situation is different.
Typically in a negotiation there aren't too many rounds of offer and counter-offer. You don't want to present the image that you're difficult to work with either, so that might temper your actions. Typically in a negotiation whoever puts the first offer up "loses", in the sense that they don't get as much as they want. That's why an employer usually will ask your salary requirements rather than telling you what they're willing to pay (and they probably already have some idea of the range, I'm betting). That's also why I always ask for more than I would ultimately accept. I'll either get what I want in the end or get a nice raise, but I always want the negotiating room.
Anyway, you tell them that you want a certain amount, and if it's within their range they'll usually take it. If not they may counter. Usually when they're at their final offer, they'll tell you that they can't do any better than whatever it is. They may be bluffing, but at that point you might be able to negotiate for additional compensation in other forms (holidays, bonuses, etc).
Also, if it's a larger company you may be negotiating with an HR/Recruiting person rather than the hiring manager. In those cases the recruiter typically doesn't care how awesome you are, they're just trying to fill a hole with a resume. In those cases if you can get the hiring manager involved they can lobby on your behalf and sometimes get you more money. I have a friend who went through this situation recently, and the recruiter told him that their offer was the absolute max for his pay grade that they could offer. When the the manager got word that it was a sticking point, he was able to get the recruiter to bump the salary. It turns out that the offer wasn't actually the max for the pay grade, go figure. In these cases it's important to understand what everyone's incentive is. HR wants to save as much money as possible on filling the position. The hiring manager wants the best person for the job.
I interviewed for a position a couple years back for an IT Manager/senior engineer type of position for a small company. It was a case where I had worked with their CEO and HR Director previously and they thought that I would be perfect for the job. I was already employed at the time too. So I told HR my salary requirements ($90k) before I even sent the resume. They said that it didn't seem unreasonable, so I interviewed and slam dunked it. Then I got a call from the IT Director a few days later asking about salary requirements. I told him $90k, and he said that he was thinking more along the lines of $50k because their budget had been changed. I asked if he was serious, because I couldn't believe he'd even ask when the gap was 45% of what I'd asked, and he said he was. I thanked him for his time and told him that while I wanted to work for the company that there was no way I could consider taking that kind of pay cut, but to keep me in mind in the future if anything came up that was along my lines. Normally I would have probably countered any offer for a job that I was interested in, but with the gap being so big it was extremely unlikely that I was going to be able to get them to move enough that I wasn't taking a pay cut.
That's a pretty cut and dry situation, because we were so far apart. Of course, if I had been unemployed at the time then I would have given it more consideration, especially if I had been unemployed for awhile. I might have countered and said I could go down to $80k, just to see if they were negotiating (badly) or truly cash strapped. But it largely depends on your circumstances.
One other point to consider is that compensation takes many forms. There is of course salary to consider, but also bonuses, vacation time, the quality of their health insurance plan (assuming that you live in the states), flex time policy, the ability to telecommute, etc. If you hit a brick wall on one area, you might be able to make some headway on another area to make up for it. Just keep in mind that once you accept a salary, you typically will only see small increases (if any) unless you change job descriptions or employers.
Also, when negotiating around bonuses make sure that the criteria for awarding the bonuses is something that you can directly impact. If the company says "we give performance bonuses based on overall company performance" then you really have no control over whether you'll get them, and I wouldn't consider them a replacement for a lower salary. On the other had, if they say "we give performance bonuses based on the number of widgets that you sell" then you can directly impact your chances to get those bonuses. That's a big difference.
________________________________________
CompTIA A+, Network+, Server+, Security+
MCTS:Windows 7
MCTS:Hyper-V
MCTS:System Center Virtual Machine Manager
MCSE:Security 2003
MCITP:Enterprise Administrator