Is this for a new job or negotiating a raise for a current one? The tips below are mainly geared towards negotiating for a new job, but are also readily applicable to negotiating with a current employer.
First off, try to determine the salary range for your occupation in your area. I there are websites out there to help with this. I think Glassdoor might be one of them, but a quick search on Bing should find you several. Adjust for your level of experience.
If you are negotiating at your current job or know people working at the company you are starting at, ask TRUSTED coworkers what they make. Obviously, that can be an iffy situation as there are mores against that sort of thing, and it may not be possible to gather this information. Still, if you have some idea as to what others make you will be better informed.
Determine what your goal salary is. What is the amount of money you can make that will make you happy with this negotiation? Also, determine what the minimum amount of money is that will allow you to take the job. Try to figure out, to the best of your ability, what the salary range your employer will offer, and what its goal salary will be for you. Determine what your opening offer will be. It should be higher than your goal salary to give you room to negotiate, but still justifiable. If you have a job that averages $50k /yr in your area, do not start at $100k even if you know you are the crème de la crème and will be offered significantly more than the average.
At this time, you may also want to consider alternatives to salary. Would you accept stock options, profit sharing, extra time off, student loan repayment, signing bonuses or the like in lieu of some portion of salary?
Prepare ahead of time several justifications for your salary. Ideally, these justifications will involve material evidence of your skill in the job. Broad categorizations and statements of your capacities are less useful than using concrete examples. So instead of saying "I am a fast coder," say "I average 500 lines of code in a month with no errors, which is superior to most coders." Prepare at least three of these justifications, ideally five or more. If you are negotiating a raise in your current job then tie your justifications to past projects you have worked on.
Ideally, you will also want to anticipate the arguments of management and have ready counter-arguments. They may say "Well, we want you, but we are also in an economic downturn." To which you can respond, "I understand that, but you also just took on the XYZ Corp as a client with a million dollar contract. You'll need my expertise to work with that client."
Be confident. Take a few minute's before your negotiation to breath deep and gather yourself. Make sure your throat is clear (and you may want to bring a bottle of water or cup of tea in). Negotiations are nerve wracking so do your best to set your anxieties aside. Do not say "I am open to negotiation," or similar. Of course you are, it is a negotiation after all. Saying "I'd like $65k /yr, because I can code 500 lines a month..." or "I am thinking about $65k, because.." demonstrates that you are willing to move without weakening your position while at the same time tying your offer in with your justification.
Go in with a pen and paper to take notes and do quick calculations to determine how much each side is moving.
Make you initial offer higher than your goal salary. Justify it. Absolutely, positively, DO NOT tell the negotiating manager on the other side what your minimum is. During your initial offer, provide one of your justifications that you have prepared for your salary. You will probably want to make this one your second best justification.
Anticipate that management will counter-offer at a lower rate. When they do so, lower your offer and provide your strongest justification for your salary. If management has a made its own justification during that phase, you will also want to counter that justification at the same time as making your own.
Repeat until you reach an argument, moving down your list of strong justifications as you make offers.
You can expect most negotiations of this type to go about three rounds of offer and counter-offer so anticipate hitting your goal salary on offer three. That's a very broad rule, though, so you also want to be attentive to how much management is moving at each phase as it may take fewer or more passes to reach an agreement.
If you cannot reach a suitable salary then offer some of the lateral goals in terms of stock options and the like previously mentioned as a means of closing the gap.
Be prepared to walk away if they cannot meet your minimum salary (assuming you are in a position where you can walk away from a job offer), but anticipate that management's initial offer may start below your minimum. Don't let that discourage you. If management seems firm below your minimum, you can say "I can't take it for that much." Remember that if you have reached this point of the hiring process then you know that they want you.
Once you reach an agreement, review the whole agreement with them based on your notes. You do not want any confusion. Ideally, see if they can provide you with an immediate written offer.
So, briefly, that's:
Research
Determine your goal, minimum, and initial offer
Try to figure out management's
Develop justifications
Anticipate management justifications and your counters
Be confident
Start higher than your goal while providing justifications
Negotiate by addressing management justifications and providing further support for your own
Anticipate that the offer will move over the course of the negotiation
Settle
Review
Best of luck.