Ditto is available on Route 13, 14, 15, the basement of Pokemon Mansion and Cerulean Cave.
Ditto is a Pokemon that embraces the "gimmick Pokemon" concept with open arms. That is to say, while it's fun to play around with, it tends to fall short in battle. Ditto can rarely win in a mirror match due to its poor health and the non-mirror matches require support to make them happen when it would be easier and safer to just use a better Pokemon. Honestly, Ditto tends to be more a liability than an asset, and that just won't do in a Nuzlocke.
Note: It's highly recommended that you give Ditto Leftovers, to accommodate for its untransformable low health.
Gym #3 - Lt. Surge (Vermillion City, Electric-type): A mirror match against Voltorb might actually work in Ditto's favor, given its higher health and the suboptimal AI; two Sonicbooms and a Shock Wave will do it, just make sure Ditto's health stays above 20. Battling either 'chu regardless of Ditto's form is ill-advised; you'll just be giving them turns to build up Double Teams and while Shock Wave will ignore it, five hits might not be enough.
Gym #4 - Erika (Celadon City, Grass-type): Mirror matches work poorly, with all the status moves flying around and weak Acid as Ditto's best weapon. Ditto in the form of either Victreebel or Vileplume (if you can rig that up) can defeat Tangela; the former is preferable due to having Poisonpowder to outpace Ingrain, but Vileplume!Ditto can manage if it keeps Tangela asleep.
Gym #5 - Koga (Fuchsia City, Poison-type): This is no place for Ditto; nothing but resisted Sludge and measly Tackle to hit with, and a lot of irritating Evasion and Accuracy antics to wade through. And the bombs. Can't forget the bombs.
Fighting Dojo (Saffron City, Fighting-type): Uh, no. Ditto will wind up as a smear of pink paste if thrown in directly, and even if it is engineered a chance to Transform the matchups are too close for comfort.
Rival (Silph Co.): Mirror matching against Pidgeot is largely luck-based; for a certain victory against Pidgeot Ditto will need to be a Dragon Rage-spamming Gyarados or a Flamethrower-spamming Charizard. Despite having only Future Sight, Ditto doesn't want to face Alakazam in any form despite its lack of direct attacks as Reflect, Calm Mind and Recover will allow it to easily stall Ditto out of its meager PP. Exeggcute has some annoying status moves, but Ditto in the form of anything except Alakazam or Exeggcute itself can beat it. Ditto should not battle Gyarados due to its consistent low health making it vulnerable to Dragon Rages. Growlithe can be easily handled by a Ditto in the form of Gyarados or Blastoise and less easily but still likely by a Pidgeot!Ditto; as usual a mirror match is a dice roll. Charizard is really only battleable as a Gyarados with Leftovers, though mind the Smokescreens. Nothing Ditto can Transform into will be able to safely beat Blastoise. A Gyarados!Ditto with Leftovers or one in the form of Pidgeot or Growlithe regardless of item can knock down Venusaur.
Giovanni (Silph Co., Ground-type): Nidorino can be battled by a Ditto in the form of any of his Pokemon except for Nidorino itself. Nidoqueen!Ditto can Double Kick Rhyhorn to death; a (rather slow) mirror match is also possible, but only with Leftovers or healing. Ditto-as-Rhyhorn is the only form that can safely battle Kangaskhan. Ditto cannot battle Nidoqueen.
Gym #6 - Sabrina (Saffron City, Psychic-type): There's not much Ditto can do here, offensively speaking. It can defeat Venomoth in the form of any of her actual Psychic types but that's it. Supportwise, it can turn into Mr. Mime and Baton Pass Calm Minds, if that takes your fancy.
Gym #7 - Blaine (Cinnabar Island, Fire-type): Growlithe is battleable by a Ditto in the guise of Rapidash or Arcanine; with Leftovers it might also manage as Growlithe or Ponyta but it's risky. Ditto as Arcanine or Rapidash (and possibly Ponyta if holding Leftovers), but not as Growlithe can theoretically beat Ponyta, though the presence of its Bounce move makes it unpredictable. Rapidash is not really a safe fight in any form, nor is Arcanine.
Gym #8 - Giovanni (Viridian City, Ground-type): The combination of everything having Earthquake and everything except Dugtrio having a Ground weakness (kinda ironic, that) means Ditto can't do much here. Mirror matching Dugtrio is possible with the right stat investment, but it's probably not worth the risk.
Rival (Route 22, pre-League): Pidgeot can be battled by a Ditto disguised as Alakazam, Rhyhorn, Gyarados or Charizard, but not one disguised as Pidgeot, Growlithe or either Grass type. Ditto cannot deal with Alakazam and its mighty Psychic at all. Ditto-as-Alakazam, Exeggcute/Venusaur or Gyarados/Blastoise can conquer Rhyhorn but not as Pidgeot or Growlithe/Charizard; mirror matching is possible if holding Leftovers, though a bit gambly considering Rock Blast's variable damage. A Gyarados mirror match with Leftovers may work, but the only Ditto form guaranteed to come out on top is Venusaur, though it'll have to use at least one Growth before spamming Razor Leaf to keep from running out of PP. Exeggcute's powder moves are annoying, but pretty much any Ditto form not named Rhyhorn can take it. (Though it'll be a drawn-out fight for one disguised as Gyarados.) Ditto as anyone other than Pidgeot or either Grass type can handle Growlithe. Against Charizard, Ditto will rock as Rhyhorn or storm through as Gyarados but Pidgeot, Alakazam, Exeggcute and Charizard itself can't take the heat. Alakazam!Ditto can take on Blastoise, but it's too bulky for Pidgeot, Rhyhorn and Growlithe will be washed away and Exeggcute fears Bite. Ditto wins out over Venusaur in the guise of Pidgeot, Growlithe or Alakazam but Rhyhorn will be shredded by Razor Leaf and both Gyarados and Venusaur can barely do any damage to it.
Elite Four Lorelei (Indigo Plateau, Ice-type): Not a good time, given that her team resists most of its own (and therefore Ditto's) moves. Ditto-as-Lapras can profit off of Water Absorb and bulk to grind down anything except Lapras itself but won't have the PP for more than one Pokemon. Jynx can be beaten by a Ditto in any form except itself. That's all Ditto can contribute here.
Elite Four Bruno (Indigo Plateau, Fighting-type): Either Onix can be beaten by a Ditto disguised as any of his Fighting types, though it'll be tricky to set that up as Ditto cannot approach Fighting types undisguised. Only a Machamp!Ditto can battle Hitmonchan and it'll need to use Bulk Up once first to ensure a OHKO in order to avoid a potential Counter; still pretty risky though, considering Cross Chop's 80% accuracy. Hitmonlee can be beaten in a mirror match if Ditto is faster, or by Machamp; Hitmonchan's too slow for the job. No Ditto can stand up to Machamp.
Elite Four Agatha (Indigo Plateau, Poison-type): A Ditto as either Golbat or Arbok can theoretically Bite the lead Gengar to death, but it's much better to use a 'mon that can put it down quickly to keep the Double Teams from piling up. In order to defeat Golbat, Ditto will have to be the either Haunter or the higher leveled Gengar, but even then you'll be relying on Hypnosis and its unimpressive accuracy; probably not worth the risk. As long as you can keep Ditto awake, Haunter can be beaten in any form (except itself if Ditto's slower); the health loss from Curse will be more of a problem for it than the effect will be for Ditto. Arbok is handled in the same fashion as Golbat. No form that Ditto can take can safely handle the higher leveled Gengar.
Elite Four Lance (Indigo Plateau, Dragon-type): Only Ditto-as-Aerodactyl has a sure shot at taking down Gyarados, though a Ditto!Dragonite that can outspeed it has a good chance as well. Any Ditto other than Dragonair can take out either Dragonair; note that Gyarados!Ditto will want to spam Hyper Beam. No Ditto can take on Aerodactyl or Dragonite safely.
Champion Rival (Indigo Plateau): Ditto as Alakazam,Rhydon or Arcanine crush Pidgeot, Exeggutor and Venusaur cannot and Charizard, Gyarados and Blastoise will have to gamble with inaccurate moves; a bad idea given the presence of Sand-Attack. Only Exeggutor!Ditto can stand up to Alakazam, though with Alakazam having Reflect and Egg Bomb's 75% accuracy it's still not a great matchup. Rhydon can be battled by a Ditto in the form of either Water or Grass type. Ditto!Charizard/Arcanine torches Exeggutor and Pidgeot soars to victory; Gyarados might also have a chance, though not if Exeggutor uses Light Screen. Venusaur is the only form that deal with Gyarados, and it will need to use Synthesis at some point. Rhydon!Ditto wrecks Arcanine's day with Earthquake and Blastoise/Gyarados wash it away with Hydro Pump but Pidgeot, Alakazam and Venusaur need to stay away. Rhydon with Rock Tomb or Gyarados with Hydro Pump for the win against Charizard. Exeggutor alone can battle Blastoise and it'll need to throw up a Light Screen first. Pidgeot, Alakazam and Arcanine will work wonders against Venusaur but Rhydon and Gyarados won't cut it.
Minimum stats are calculated with 0 EVs, IVs of 0, and a hindering nature, if applicable.
Maximum stats are calculated with 252 EVs, IVs of 31, and a helpful nature, if applicable.
What Nature do I want? A Speed-boosting nature is probably the best way to go; the other stats vary in viability depending on current form, but outspeeding is always useful. Too bad there are no natures that boost HP, though...
How good is Ditto in a Nuzlocke? Fun to play around with, but too dependant on support and/or luck to have much use.
Neutralities: Normal, Flying, Poison, Ground, Rock, Bug, Steel, Fire, Water, Grass, Electric, Psychic, Ice, Dragon, Dark