What is the rule for forming chinese names diminutives? In alphabetical languages, diminutives are easily made by adding a suffix (e.g. -ito, -ino, -ine, which belong to some Romance languages) and sometimes contemporaneously changing the ending of the original name. 

Japanese uses a sort of appending naming, such as "-chan", "-kun", etc.

But what about Chinese? Are there rules when forming diminutives, or what's the usual way? 

I'm interested in:


what characters for diminutives exist;
who can they be used with
when not to use them.


As you might have noticed, I am not talking about nicknames, but rather about diminutives.

EDIT: Like Szabolcs said, I'm not asking for honorifics but rather about those changes in names that show affection, intimacy or close relation. Please, read this page on Wikipedia in your language so you understand what is meant by Diminutive.
This is a broad question. You will use different words depending on different situations. 

To call someone that you are familiar with (note: this is the premise). There are several different cases.


For kids: In general, the parents will give their kids a diminutive, besides the formal name.The diminutive may have different forms so that you can't find a rule.  


  I have a niece with the diminutive of "小鱼儿 (literally means: little fish)". This name has nothing to do with her given name, but it is related (I think) to her surname "余 (has the same pronunciation with 鱼)"
  
  One of my friends has "俊" as the last character of his given name, so his grandpa calls him "俊俊". This "XX" form is very common. Note, his grandpa(from a grandpa's view, he is always a kid) can call him this way while I should not(for me, he is an adult, not a kid).

For adults. user334's answer is good (point 1 and 2). However, there are some details I want to point out.

If the listener is very old (60 above, very rough, no precise definition), and you are young. It's not polite to call him "老+surname". You would:


  call him "surname+叔" or "surname+叔叔" for a man.
  
  call her "surname+姨" pr "surname+阿姨" for a man.


...when they are in the same generation as your parents. Or,


  call him "surname+爷爷" for a man
  
  call him "surname+奶奶" for a woman


...when they are in the same generation as your grandparents.

Besides, you could call an old (in the same generation as your grandparents) man or woman "surname + 老" to show your high respect. This form is very formal and not used usually.
For adult in the same generation as you:

"阿+surname" or "阿+last character of the given name" are often used. Yes, my friends would call me 阿黄, but not all of them call me this way (just call me with the full name).

"小+last character of the given name" could also be used(less common).

“仔" as in user334's answer, is popular in Guangdong, Fujian provinces and HongKong, Macau and Taiwan, I think. More presicesly, it's popular in the 粤 and 闽 dialects.

You could also use "surname+兄" to call a man older than you. Ok, you could call me "黄兄" :D

You could use "given name" to call a man if his given name contains two characters.

Also, among familiar friends, they generally would call each other with nicknames to make things funny. When I was in the university, some of my classmates called me "大黄". Oh, that's not a good name, but funny, because "大黄" is a kind of Chinese herbal medicine.