I consider myself to be a fairly decent sniper, at least in most of the FPS's i've played recently (BF2, BF2142, Quake Wars, COD4 etc). Here's a couple of pieces of advice that I find helps me.
1. Map your fire button to the keyboard! Seriously. It may seem odd to not have it assigned to mouse1, and indeed may take some getting used to but trust me, it helps with accuracy ALOT. When you click, you're going to move the mouse, even if it's only a little bit and this can throw off your aim significantly after the first shot, giving the target time to respond if you don't get them first shot (especially if your mouse's sensitivity setting is set higher than normal, like mine). Mapping the fire button to say, enter will mean that you can aim as normal with the mouse, and fire without throwing throwing off your aim.
2. Get a decent mouse. The best snipers do not use that bloody mass-produced microsoft affair that came free with your rig, period. Get yourself one that has good reviews and decent DPI. A heavier than average weighted mouse is probably best as well, as the more lightweight ones tend to sometimes move more than you intend (again, especially if your sensitivity is set higher than normal). A mouse is something you use practically every time you use your computer, so getting a good one is money well spent.
3. Don't pick the obvious sniping spots. Don't even THINK about sniping from a guard tower, or somewhere that can be seen easily from the other side of the map. You might as well just wear florescent pink armour, stick a bullseye on your head and announce your location in the open chat channel. Sniping is just as much about stealth as it is marksmanship.
Instead, pick somewhere less obvious, such as going prone in a bush at the base of the guard tower. Don't sit up on the roof or the top floor of a building. Fire from the first floor window. This has the added bonus that if you miss the first shot, your target will likely swivel around and look at the most obvious spots to try and spot you. This might give you time to re-aim and take him out with a second. Also, don't keep going to the same spot again and again if people kill you. It just means that they will automatically know where you are if you miss, and probably just turn around and kill you again. Move around between different spots, and always keep your opponents guessing. This is especially important on games like COD4, with the killcam.
4. Practice! I know I'm probably sounding like a broken record when I say this, but there is no substitute for experience. While general sniping experience carries over between games, don't just expect to be good at sniping at one game because you are in another. Each games weapons handle slightly differently, each game has different hitboxes (as has been said before)), and it takes time to get used to the nuances of sniping in each different game. But if you keep practicing and honing your skills, you WILL get better.