I assume you can get your hands on a small bag and a bunch of identical beads.
Take 20 beads and write the numbers from 1 to 20 on them. Put them in the bag and (optionally) write "d20" on it. To simulate a d20 roll, just shake the bag and pull out a bead without looking. Then return the bead into the bag for the next "roll".
This is basically how traditional lotteries worked. In a pinch, if you don't happen to have suitable beads available, you can substitute slips of paper, and the bag can be replaced with any container, such as a jar or even a hat, depending on what's available. But beads in a bag work very nicely.
This method generalizes in an obvious way to any die size. With enough beads, you could even simulate a d100 with a single bag, although using two bags with 10 beads in each may be more convenient (just as d100 rolls are usually simulated with two d10 rolls). You can even handle occasional weird-sized dice by temporarily removing a few beads from a larger bag (or just tossing them back if you happen to pull them out).
For games that call for rolling a large number of small dice (say, Nd6), you can make a single bag that has, say, 60 beads, 10 each numbered from 1 to 6. Drawing N beads from such a bag is not quite equivalent to rolling Nd6 (getting many beads with the same number is somewhat less likely than with dice; the more so, the bigger the number you pull out compared to the number of beads in the bag), but it's pretty close for many purposes.
A similar method can also be implemented with a deck of cards, as suggested by Tridus, which is shuffled between draws. Again, if multiple cards are drawn from the deck between shuffles, the distribution won't perfectly match that of independent die rolls, but if the deck contains many copies of each card, it may be close.
Other tricks for simulating "funny dice":
A d12 can be simulated with an ordinary d6 and a coin: just roll the die and flip the coin, and add 6 to the die roll if the coin comes up heads.
A d4 can be simulated with two different coins, one worth 1 point if it comes up heads, and the other worth 2 points. This gives you a number from 0 to 3; for a standard d4 roll, add one.
A d8 can be simulated just like a d4 above, but with the addition of a third coin worth 4 points.
To simulate a d10, you can roll a d12 (by any method) and re-roll any rolls of 11 or 12. Or, if you prefer, subtract 2 from the d12 roll, and re-roll any rolls that would go below 1.
Alternatively, roll a d6, re-rolling any 6s. Then flip a coin, and add 5 if it comes up heads.
The same method can be used to simulate a d20 with a d6 and two (distinct) coins: roll the d6, re-rolling any 6s, then flip the coins and add 5 if the first comes up heads, and 10 if the second one comes up heads.
As Sardathrion suggests in their answer, a watch can also be used to simulate die rolls. Looking at the seconds hand gives you a vaguely random-ish number from 0 to 59; from this number, you can take the remainder modulo 20, 12, 10, 6 or 4 (all of which divide 60 evenly) and add one to get a simulated d20 / d12 / d10 / d6 / d4 roll.
(Taking the remainder modulo 8 almost gives you a d8 roll, but it's slightly biased. Resist the temptation to just drop the last digit for a d6 roll; while that will work, the results will be a lot less random than if you take the remainder modulo 6.)
This can be particularly handy e.g. when playing in a car or bus, where rolling dice would be difficult, and even cards or lottery bags may be inconvenient. The disadvantage is that the "random" numbers generated this way really aren't that random; in particular, this method works especially poorly for rolling multiple dice in sequence.
If you have access to a stopwatch that shows fractions of a second, though, this method becomes a lot more practical. Just start the stopwatch and let it run for a few seconds before stopping it and looking at the last digit(s). You can easily generate very good d10, d20 or even d100 rolls this way, if your stopwatch has enough precision; other die sizes may be handled by starting with a d10 or d20 roll and re-rolling any numbers that are out of range.
(In fact, this is precisely how simple "electronic dice roller" circuits work: they increment a digital counter, say, 1000 times per second, and show its current value — modulo the number of sides in the chosen die — when you press a button. Since you cannot time the button press down to a millisecond, the displayed value is effectively random.)