Most simply, you can include the units in parenthesis after each label in the legend. The difference in colors definitely helps pick apart the different data, keep that in there.
The axis labels is where this question gets a bit more challenging. One option is to have units on both sides of the graph. In this example, two distinct ideas are being conveyed in one graph. It places the "units sold" title and units on the left, and total transactions on the right. This provides two separate units, both on the vertical axis. Again, color would help differentiate them here, so the user knows which side to look at the for units.
However, you are hoping to convey three distinct units on one graph, so a more creative solution is required. One might be multiple axes as in this question. Another option you might consider is displaying numeric values next to points on the graph. This can easily make the graph cluttered or unreadable if implemented without care.
Another interesting option is using a single scale. Let's say I want to express a series of length measurements with a minimum of 1 meter and a maximum of 100 meters. Also, a weight between 10 grams and 10 kilograms. Finally, a time between 0.1 seconds and 0.5 seconds. In summary:
Measurement Minimum Maximum
Length 1 meter 100 meters
Weight 10 grams 10 kilograms
Time 0.1 sec 0.5 seconds
We label the axis from 1 to 100, with set increments between. Then we might say the units for length are meters, weight as decagrams (increments of 10 grams) and time in deciseconds (tenths of a second). While these units might need extra emphasis to be clear, you can use a single string of numbers on the axis.
Consider why you are trying to overlay three series of data on one graph. If you want to easily compare their values, make sure the scale is appropriate to convey this comparison.