First, most local yarn store hours are very restrictive. Most don't open until late morning and are closed by 5pm. Most are open only 3-5 days a week. Few are open all weekend. So basically, if I want to purchase yarn at my local store, I most likely have to take off of work (and being a nurse, weekends can be workdays for me). If I don't work, I don't get paid. If I don't get paid, I don't have money for buying yarn because when it comes to the bills versus yarn, the bills will win every time.
Second, most local yarn stores don't have good websites to shop from. I'm not saying they need to have Amazon-quality websites, but some brand names and a few pictures couldn't hurt. Otherwise, how do I know what stock they carry? At least give me a visual idea (because isn't visuals what drives our yarn purchases?) of what they have so I know if ordering by phone/e-mail or even making a road trip is work it. I could call/e-mail them blind, and could you imagine how that conversation would turn out?
"What kind of sock yarn do you have...what fiber is in that...how's its sheen...what colors....what's shade exactly is "wild mushroom risotto with tomatoes"...blue, really?"
And they'd tell me it looks beautiful and I'd order it and find out it looks like something from a 50s horror film. So the only way I'd really have an idea of what stock they had, I'd have to go in, and to do that I have to take off of work...and see my first point for how that will turn out.
Third, yarn shop prices are generally more expensive. Yes, you get what you pay for and I'm all for quality. I've also had my share of yarn indulgences. But I'm not dropping $8 for cotton for a washcloth that I will use to clean my bathtub. Or laying out cash for gourmet yarn and needles to teach someone who may or may not take to the craft, or to teach a 7 year old to knit when he'd rather run around tying furniture up with the yarn and poking holes in the couch with the needle.
Fourth: customer service. I've been lucky in that my two favorite yarn shops--neither of which I live near right now--treat any customer like they were their only customer. They take their time to talk to me, not just about yarn sales but about knitting as well. They're not pressuring me to buy. In fact, one even hooked me up when I was living across the country by tracking down a skein of yarn that I needed when I found out that I under-bought for my project. I like great customer service, and so whenever I am at these yarn shops, they get a nice sale and lots of recommendations out of me.
(I am optimistic about a third yarn store that I discovered near me. The customer service is good so far and the hours are also better than a lot of yarn shops, though still not great. But in all fairness, I am cold sheeping right now so even if I took off from work to go there, I wouldn't be buying yarn at this time.)
But I've encountered more yarn shops that tend to have an elitist attitude: they're sitting there with their own knitting and can't be bothered to get up and help you. Or if you do insist on help they act like you're doing them a big favor. I've fortunately never encountered the "appointment only" type of place--I can't imagine how THAT experience would be.
It's hard to support your local yarn shop when the local yarn shop makes it hard to do so, and it's hard to feel sorry when a local yarn shop goes under when they don't make any effort to serve their customer's needs. I often wonder if the owners got into owning a yarn shop just so they would have all this yarn to play with, without realizing that the point of owning a store is to sell a product.
I do try to support small businesses when I can. But when a yarn shop is unable (unwilling?) to meet my needs, I feel no guilt whatsoever when I order from KnitPicks or The Loopy Ewe, or if I stroll down to Michaels. Nor will I refuse to be made to feel bad about doing so.