The difference is mostly in degree.
We use 'harsh' and 'cruel' to talk mostly about two situations:
1. punishments
2. human interaction
For punishments, 'harsh' means that the punishment is pretty severe for the crime. 'Cruel', however, is used for punishments that should NEVER happen to anyone because they are inhumane. For instance, under Hammurabi's Code, a thief would have his hand cut off. That's cruel.
For interaction, it usually describes the way people talk to each other or treat each other. If an unattractive person asks you what you think about their appearance, you can respond in many different ways.
Harsh: I don't find you attractive at all.
That's very honest and blunt, and will probably hurt their feelings. However, it's only harsh because you were so clear.
Cruel: Ugly people like you should not be allowed to have children.
That's cruel because it is not only unnecessary, it's clearly said to severely hurt the person's feelings in a situation that does not justify that level.
'Cruel' implies that the cruel person is trying to cause as much pain as possible, usually just because they want to.