Children are young scientists, true hands-on learners. Those little hands go everywhere!
I think that's the problem for a lot of kiddos. Unless they can see something on their hands that they personally consider gross, they look "clean enough". This makes sense in a way, children are concrete thinkers and learners. If we want them to wash off invisible germs, we have to find a way to make them concrete for the children.
Several years ago I came up with a solution - glitter paint! I explained to my students that germs are a lot like glitter: very very small, and very, very sticky. I put a tiny squirt of glitter paint into their hands, and have them rub it in.
Seeing that glitter (and by extension germs) spread really easily is a good start, but next we have to learn how to get rid of it!
I model washing my hands super fast, just a quick splash under the faucet, and then we look at my hands. Oh dear! Glitter (and germs!) everywhere still! I try again with soap but not much rubbing. Again, there's still glitter all over my hands.
At this point the kiddos can usually tell me that I need to use soap, rub it all over my hands, and rinse well. Sometimes we count to 20 (20 seconds is the recommended handwashing time), and sometimes we sing the Happy Birthday song twice. When we look at my hands again, there's still glitter left, but not much. I challenge the children to see how much glitter they can wash off, and they get busy!
I recently had 2 former parents mention that their children take forever to wash their hands, counting outloud to 20 of all things. Their children just started third grade. It's been at least 3 years since they did this activity with me. I think it stuck!