1. One hundred kg is heavy.

2. One thousand dollars is much.
3. One thoudand km is long.

Are all the sentences grammatical?
Do we have to use the singular verb 'is'? What about the plural verb 'are'?

They are all grammatically correct, but #2 is a bit awkward. It would be better to say, "One thousand dollars is a great deal of money" or "One thousand dollars is a lot."

Yes, the verb needs to be "is" because the amount of weight or money or whatever is being thought of as a unit.
http://grammar.ccc.commnet.edu/grammar/sv_agr.htm ~~> http://grammar.ccc.commnet.edu/grammar/plurals.htm#collective_nouns
"Numerical expressions are usually singular..."

Yes, all of the sentences are grammatically correct.

In English, we use the singular verb "is" in these sentences because the subject of each sentence is a singular noun phrase. In each case, we have a singular quantity followed by a unit of measurement. For example, "One hundred kg" refers to a single quantity of 100 kilograms, "One thousand dollars" refers to a single quantity of 1000 dollars, and "One thousand km" refers to a single quantity of 1000 kilometers.

If the subject were a plural noun phrase, we would use the plural verb "are" instead. For example, if we were talking about multiple quantities of a hundred kilograms, we would say "A hundred kilograms are heavy." However, in the sentences you provided, the subject is one singular quantity, so the singular verb "is" is used.