A geek is a very difficult thing to define. Not only is it tricky to pin down exactly what I think of as a geek, there are also people who disagree with my definition. Like a "hacker", a "geek" is different based on who you ask, and whether they like them or not. So let's get at least one basic fact straight:
A geek is a good thing.
After that, things get hazy. Geeks are people -- usually. Some stretch the definition of a "person", lacking basic interpersonal communication and hygeine skills, but in general geeks are people. They're not ordinary people, though, and they make no claim to be. A geek is someone who is unusual in some aspect, generally centered around an intellectual fixation of some kind (as opposed to, say, a sexual fixation, which is a fetishist). Commonly that fascination is with some fairly cerebral, abstract subject: these are computer geeks, chess geeks, math geeks, electronics geeks, physics geeks, and the like. But you also get more concrete fascinations, where an interest has grown from a hobby into an obsession. Thus you get hi-fi geeks, music geeks (not the same as a hi-fi geek: music geeks listen to music for the tune, hi-fi geeks listen to pick out the distortion), astronomy geeks, and even gardening geeks.
Most of these geeks you would recognize from your own circle of acquaintances (if not your friends). Other common geeks pretty much follow the standard fields of study, since universities breed geeks like dung-heaps breed larvae. In universities you'll find political geeks, capitalism / business geeks, ecology geeks, debating geeks, history geeks, economics geeks, law geeks, psychology geeks, art geeks, and more. You even get sports geeks: these are not people who actually play the sports -- not ever -- but people who follow them obsessively and know everything there is to know about the sport.
I consider myself a computer geek. That doesn't mean I'm particularly skilled at computing -- I'm not -- but I am intensely interested in it. I'm competent, but I want to be skilled. My geek code is full of > signs pointing to long rows of + symbols. And I like being a geek.
So far, so stereotypical. Traditionally, geeks have been outcasts from society, clever freaks with few friends, and if they did have friends, these were generally a small group of similarly-minded geeks. But in the last decade or so, attitudes towards the geek have changed. As much as I may disapprove of his company, it was Bill Gates who really turned the tide as far as public opinion was concerned. Previously, the whole adolescent social system idolised the athletic and in the most part spurned the intellectual. However, by the 80's, this system was already struggling as an obsession with capitalism spread and economics and business geeks began to get high-paying jobs and kick the butts of the morons who spent their school days on the playing field. The 90's rolled around, and the world was faced with good old Bill: by then entirely a businessman, he had nevertheless started out in life as a fully-fledged computer geek, and he was now clearly one of the richest men in the world -- and steadily getting richer, as all the business geeks who'd been hired in the previous decade started jacking up Microsoft's share price.
Suddenly, it was cool to be a geek. But it was an odd kind of cool, a jealous kind of cool. In an athleto-centric social system (to coin a term), it's fairly easy to be "cool" -- by which I mean well-known and accepted -- simply by expressing an interest. You don't have to be good, you just have to want to be good, because in a social situation all that happens is people talk to each other, and unless they're actually demonstrating their skill at that second, the actual players of sport are indistinguishable from people who are as interested in the sport as they are.
But that doesn't work with geekiness, because geekiness is by nature an intellectual persuit. It's relatively easy to fake an interest, or take an intellectual interest in a non-intellectual persuit, but it's impossible to pretend you're interested in a subject when you're not; you get bored. So you don't get fake geeks, or at least not convincingly fake geeks. You get incompetent geeks, or arrogant geeks -- people who think they know more than they do about their obsession -- but at least they're really interested in knowing all that stuff. Which is why it's a jealous kind of cool to be a geek; just because it's cool to be a geek now doesn't mean there are more geeks around, the rest are still not interested, but they wish they were. This is of course particularly true in the field of computing, when during the dot-com boom being a geek was not just cool but intensely lucrative: geeks became millionaires overnight, and the last claim of the benefits of athletics was gone -- geeks earned more than sports superstars, and didn't have wear silly uniforms to do it.
In addition to the new popularity of geeks, the increasing popularity of the Internet meant niche-interest groups -- including every possible type of geek -- were finding it increasingly easy to congregate and share ideas. No longer was the lone astronomy geek a loner; he could trade skymaps and coordinates (to pick some random buzzwords; I'm know nothing about astronomy) with fellow astronomers worldwide. And for computer geeks, obviously, it was basically heaven on Earth. The beginnings of "geek culture" are beginning to emerge from the disjointed groups of geeks; people who don't really fit in with most people and don't really care that they don't are beginning to find there are people they fit in with. Some resist this, others embrace it. Sometimes this goes wrong, with people insisting that there are "qualifications" to be a geek, or even worse things like dress codes. But that can all be safely ingnored. Like the other famous self-definition, homosexuality, you are a geek if you say you are. Geek and proud, that's me.
Of course, I also share that other self-definition too, and if you happen to share both, you might want to check out Gay Geeks.org, a community site catering to a fairly specific community :-)