It goes without saying that a tech lead has to be strong technically, but I think what makes or breaks a tech lead is whether they have strong leadership characteristics. I see those characteristics falling in three categories (Self / Team / Business):
Has an active desire to work with people
Possesses "confident humility"
Can accept a position with less than 100% of time spent working on code (sometimes a lot less)
Knows where the gaps in their knowledge are
Is not concerned with "looking good"
Can delegate work
Can facilitate conflict resolution and team decision making
Wants team and individual members (including self) to grow and learn
Wants team members to succeed and actively works to ensure they receive recognition for it
When necessary, can combine their own experience with the thoughts of a team and render a decision
Understands that people have different learning styles (visual, tactile, auditory, etc)
Shields team from outside influences, so they can get their work done (much as a scrum master does)
BusinessUnderstands the value that IT provides to business
Can speak to technical decisions in a way that addresses business partners' priorities
Understands and accepts that business may only wants to pay for "good enough" solutions, not "best" solutions.
What do you think? Do you agree/disagree with the characteristics I've identified?