I know there are special products on the market for pets to color thier fur/hair, but I just use plain old food color and water. Last year I color Gigi's hair pink for Halloween to be cotton candy. She came out so cute and it's so easy and safe to do. The color will last through quite a few baths, too.
Today I'll be coloring her hair gray. I'll be using black food color to do it. I wish it would come out black (my first poodle was black), but it always comes out lighter than the color you apply (for example, when I colored her hair pink, I used red food coloring to achieve the color). I'll post pictures after she is colored and groomed.
For anyone interested in doing this, start with clean, dry hair/fur (this can only work for light-colored dogs/cats). Do this outside because they will shake and get that food color everywhere. Fill a spray bottle almost full of hot water (don't worry, when you spray them, it'll come out warm) and add as many drops of food color as you want to the water. The more drops, the more intense the color. Now, put a loose collar and leash on your dog and go outside. As quickly as you can, start to spray your dog with the spray bottle full of water and food color (wear gloves and old clothes, because it'll stain your hands and clothing). If you're dog is big, have someone help you with a second bottle. Once your dog is covered with the solution, let it sit on their fur/hair for 15-20 minutes. This is the hard part because they want to run and play. I let Gigi play once with the color on, and she got her paws real muddy...not a good idea.
Once the time is up, do not rinse out the color. If they are still real wet, get an old towel and gently press out the excess water. Otherwise, bring them back into your home or where ever you groom them and start to blow them dry. That's it! Easy peezy!!