A little tip that I've used: It's much easier to tell customers their unlock code if it's pronouncible. So, when I made a program to generate such keys a few years ago, I made it so that it alternated vowels and consonants. This also lessened the risk of having keys that contained naughty words somewhat (but not completely).
Basically, I used two strings, one with vowels, one with consonants, and then alternatingly selected a random character from them (also randomizing which string I started with).
Also, don't use both upper and lower case letters, and don't mix in numbers. It's simply too much of a human error potential. People forget to press shift, people can't see the difference between 0 (zero) and the letter O and so on. It's better to have a simpler, but longer key.