My opinion of Spike in a nutshell:
In S2/3 he couldn't have been more awesome. Pure entertainment value really. Funny, awesome, and complex. His relationship with Drusilla was very interesting - it showed another side to his character without engulfing his character entirely. He was a completely evil bastard, but he was still very human, with human desires, capable of engaging with humans, and enjoyed his current existence very well.
In S4 he was still very entertaining and had lots of potential, but showed signs of badass decay.
S5 was a transitional season for him. He still kept a hold of his entertainment value, but the patheticness was ramped up. Though "Fool for Love" made him more complex, and he was sympathetic in "The Body" - the last time until Chosen he had a motivation that wasn't centred around Buffy.
In S6 he did nothing all season that wasn't to do with Buffy. And most of what he did was emotionally manipulate her, whine that she's using him even though he asked her to, and then tried to rape her when she got fed up of him. And he lost all entertainment value - does anybody remember a single witty line from him? He used to have 4 or 5 an episode in S2, I don't remember a single one in S6. There was also some lovely retconning of his character, such as that awful line in "All the Way".
There was some improvement in S7, but at that point the only way was up. But a massive problem with him was how he simply overwhelmed all the other characters - S7 was "The Buffy and Spike Show", with cameos from the English guy, the lesbian witch and the guy who fixes windows. No matter how well or badly he may be characterised, Spike should under no circumstances be given more screentime than Willow and Xander (I'll let him have more than Giles because he left the main cast already). He is a secondary character, he should not be any more than that. Also, Lies My Parents Told Me woobified his backstory to the point of retconning the entire mythology of the series. And he acted like a jerk to Wood (I'm sorry, but a man's dead mother is something that you only taunt somebody about if you're an evil villain. Oh God, I've just realised - taunting about dead mothers, initially a villain, snarkiness, blonde hair, mummy's boy,
leather pants treatment by fandom - Spike turned into
Draco Malfoy). See lower down for more on S7 Spike.
I haven't yet seen AtS S5, I'm holding out for some improvement - he started to redeem himself in Chosen, by doing something that wasn't jerkish or entirely centred around Buffy.
If they just let him be evil like he is supposed to be I wouldn't have an issue with him at all. I really think that the writers didn't know what to do with Spike.
I very much agree with you. I feel that the writers liked Spike, and knew he was popular, but didn't actually know what to do with him. For most of S4 he just hung around delivering the odd one-liner. Then the gave him the Buffy-love storyline in S5, which is a waste of potential as I'll explain in a second. But they knew they couldn't have a soulless Spike in the show forever, so they stuck a soul in him at the end of S6. And during S7 it felt like half the time they were ripping off Angel's storyline, and half the time they were trying to avoid that by making the two of them completely different - ie. Angel feels awful about what he's done and wants to make amends, while Spike "doesn't give a piss" about what he's done, making Spike look basically like a jerkish version of Angel.
As for why Spuffy is a waste of potential - well it took a potentially complex character and reduced him to nothing but a character that loves Buffy. Every storyline he had, every decision he made, hell most lines he had, everything about him centred around Buffy. It made his character both very dull and indistinguishable from Spuffy - Spuffy was what defined Spike in the late seasons, therefore if you didn't like Spuffy you couldn't like Spike. Whereas I found it very easy to not like Bangel and still like Angel, because Angel had a life and some motivation outside of Bangel.
There are so many ways that Spike could have turned good, some of them vaguely touched on in S4. The potential for his storyline was incredible - they could have explored so much of what can happen to a soulless creature when he can't kill. When he's completely ostracised from the evil community. Spike started fighting evil for the sake of fighting. If they had explored his relationships with each of the Scoobies, they could have had an interesting storyline where he helps the gang because he genuinely enjoys being around them, and is simply lonely otherwise. Or they could have explored a search for identity - he can't be evil, can't be good. He'd have to find himself first.
But none of that happened. All his motivations, which could have potentially been so layered and complex, were boiled down to "he loves Buffy", and nothing else ('cept for the end of Chosen, which is the first time in 3 years that he showed a shred of independence). I felt that Spuffy engulfed Spike, and ruined his character. And before somebody claims that I'm objecting to a character becoming more complex, I'm not. Spike was a very complex character in S2 and 4, as well as being extremely entertaining. S6 and 7 Spike was a one-dimensional, manipulative, creepy, whiny, jerk. IMO. His entire storyline fits very neatly into the tired old cliche of a "bad boy" turned good from the love of a good woman. Spike in the late seasons was, essentially, a very easy character.
EDIT: Also, after S6 I was sick to my back teeth of James Marsters shirtless. Hey, I think James Marsters is as sexy as the next guy, and seeing him shirtless would be a great treat usually. But S6, and to an extent 7, took it to ridiculous levels. It was as though Spike couldn't dress himself, which I wouldn't actually put past him. And it didn't help that in S6 Spike stopped being sexy and just became creepy. It's insulting to the actor, it's insulting to the character, and it's insulting to us.