If you are shopping for a knitter who already has everything -- yarn, needle sets, holders, stitch markers, cable needles, scissors, tape measures, gauge measures -- here is an idea. A kitchen scale.
Really. This is one of those advanced knitter gifts. I bought mine back in the spring from King Arthur Flour. It is meant for use in the kitchen, for those baking recipes that are written in weights. (Flour is a particularly poor ingredient to measure by volume, so some traditional recipes are written in ounces or grams.) Mine weighs in grams or tenths of ounces. I'd prefer one that weighed in tenths of a gram, but this one will do.
So, why would a knitter want a scale? If you are knitting socks, gloves, or anything in a pair (or multiple) you can weigh the skein of yarn at the start. Then you can weigh it as you get close to finishing the first of the pair. This can keep you from running over on the first sock and having to tear it out so that you can finish the second sock. And by the way, you weigh the remainder of the skein, not the work in progress. The work in progress has needles and stitch markers in it.
You can also use this for knitting scarves. Weigh the skein after each repeat of the pattern and pretty soon, you'll know accurately how much you need for each repeat. You can use that information to calculate how far to work before binding off. I used this on a clapotis. I got the separate weights for the beginning triangle and for a repeat in the middle section. From that information, I knew when I needed to stop working the middle and to start the decreases for the end triangle.
You can also use this to find out when the manufacturer has made a mistake. Ah-hah! That odd gap in the color progression really was caused by a break in the yarn and a loss of 5 grams of wool.
And when you have scraps lying around, you can weigh them to calculate how much yardage is left. All you need is the current weight of the skein and the original label that gives you both a weight and a length. From there the math is simple -- original length divided by original weight will give you length per weight. Muliply that number by whatever weight you have left on the skein, and that will give you the amount of length remaining. Or you can get the stash section of Ravelry to do the math for you.
Of course, if the knitter also takes up dying fiber, well then, a scale is indispensable, since dye recipes are often based on weight of fiber and weight of dye materials. But maybe we'd best not go there just yet.