Every year, the superlative Yarn Harlot writes a series through December giving ideas for holiday gifts for non-knitters to buy for the knitters in their lives. This year's starts right here, and you should definitely check it out. (Continue to click through all the posts for the month.) But this combined with a few conversations I've had recently made me want to say a bit about buying knitting-related gifts in general.
First, let me say that wanting to buy your knitter yarn or other knitting implements is a VERY NICE impulse, and they will be delighted that you thought of it and wanted to get them something so specific to their interests. But here's the thing: All knitting stuff is not created equal. Even if you get really nice knitting stuff... well, your knitter certainly has preferences, and loving yarn doesn't mean loving (or wanting to work with) all yarn. It's like if you know someone likes music, and you go pick out a CD with a really pretty cover, but it turns out that it's classical and they like rock. Both are good! But it's just not necessarily what they want!
So what you should do? A few ideas:
1) If you can pay a lot of attention to what your knitter knits - it helps if you live with them - you might be able to pick something out. It helps if your knitter has predictable taste. For example, if you know they like to knit socks (and know they're not allergic to wool), you could go to a yarn shop and say "I want some really nice sock yarn for my knitter" and they'd totally be able to hook you up.
2) Ask your knitter's friends! They'd be delighted to help make sure another knitter gets awesome presents, I promise. They could probably point you in the right direction, or give a yes/no on a particular idea you have. Or if your knitter is going to a shop or fiber festival or something with friends, you could sneakily ask a friend to report back if there's anything your knitter clearly wanted but didn't buy. OR you could say that if there's anything in that category up to however much you want to spend, the friend should go ahead and buy it and you'll pay them back. (It helps to arrange this in advance so you're not, say, texting to arrange it DURING the shopping trip. Not that I've had that happen recently or anything.)
3) If your knitter has a favorite local yarn store, get a gift certificate! I know it might not seem like as much "fun" to open, but I promise, every knitter has a mental (or actual) list of things they want to buy at the yarn store but haven't because it's too expensive or decadent or whatever. The "permission" to spend money on whatever they want is AMAZING.
4) If you don't know of a good local store, go for online. I have personally ordered from these three companies and can vouch that they're decent:
The Loopy Ewe - Lots of smaller and international yarn companies as well as some of the big ones.
Knitpicks - Great solid, dependable basics.
WEBS - HUGE selection, everything from basics to fancy stuff. And they have discounts when you order at least $60, so your knitter could potentially get more for their money.
Hope this helps! Any questions? Let me know!