I started out with no Pokemon having guaranteed spots on my team, just certain moves. I knew I wanted Spikes, Stealth Rock, Toxic Spikes, and Rapid Spin. I wanted a Ghost to block their Rapid Spin, and Wish is always helpful. The format is Name: (healing moves other than Rest) | HP / Def / SpD. I eliminated garbage like Delibird, and stuff I felt was outclassed on a defensive team, such as Nidoking vs. Nidoqueen. I'm including this list partly because it's where I started, and partly to give other people who want to make a defensive team an idea of what else is out there.
TOXIC SPIKES:
Nidoqueen: ()
90 HP / 87 Def / 85 SpD
Drapion: ()
70 HP / 110 Def / 75 SpD
Cloyster: ()
50 HP / 180 Def / 45 SpD
Forretress: ()
75 HP / 140 Def / 60 SpD
Tentacruel: ()
80 HP / 65 Def / 120 SpD
Omastar: ()
70 HP / 125 Def / 70 SpD
For this list, I basically threw out Omastar and Cloyster. Cloyster only has 2 resistances, and only one of them is really ever any use. The Water resistance equates to a Waterfall resistance, since Surf is still doing a lot of damage to Cloyster. This means that Cloyster, if it uses Hidden Power Electric, can stop Gyarados, provided it doesn't have Stone Edge, then it's a toss-up. Omastar is in a similar boat of a poor typing, because everything it resists is usually paired up with something it's weak to. Normal Pokemon usually have Earthquake or a Fighting move. Fire is paired with Fighting or, in the case of Charizard, EQ. Ice goes with Electric or Fighting. Flying, although rarely used, is usually on the Special side and often paired with Aura Sphere from Togekiss. In other words, the two of them have crap defensive typing, so they'd need to be pretty special to make the cut.
Any Poison type gets the automatic advantage of auto-absorbing Toxic Spikes (that was Cloyster's downfall as a Rapid Spinner, along with the SR weakness, at least when I used it long ago). This left Tentacruel, Forretress, Drapion, and Nidoqueen. Tentacruel and Forretress can Rapid Spin, and Drapion and Tentacruel can Knock Off. Nidoqueen's defensive typing is also one plagued by resistances being paired with its weaknesses. Electric types, as a rule, carry Hidden Power Ice. Rock attacks are almost never seen without Earthquake. So Nidoqueen is also on shaky ground. So I stopped here with this cut down list, and went on.
SPIKES:
Cloyster: ()
50 HP / 180 Def / 45 SpD
Forretress: ()
75 HP / 140 Def / 60 SpD
Omastar: ()
70 HP / 125 Def / 70 SpD
Skarmory: (Roost)
65 HP / 140 Def / 70 SpD
Again, if possible, I wouldn't use Cloyster, because it sucks. Omastar has an even worse typing as far as I'm concerned, because at least Cloyster walls something (most Gyarados) and has better offensive STAB. This leaves Forretress and Skarmory. Right away, Skarmory has the advantage of Whirlwind, more resistances, the coveted Earthquake immunity for Garchomp (and the lack of the 4x weakness to Garchomp's Fire Fang / Fire Blast), and most importantly, Roost. Forretress, however, has better overall defensive ability, and the almost as important Ice resistance (screw you, Weavile and SubPunch Crunch Ice Beam Tyranitar!). It can also add in Rapid Spin or Toxic Spikes to complete the package. So here, my choice was narrowed down to those two.
RAPID SPIN
Cloyster: ()
50 HP / 180 Def / 45 SpD
Forretress: ()
75 HP / 140 Def / 60 SpD
Tentacruel: ()
80 HP / 65 Def / 120 SpD
Hitmontop: ()
50 HP / 95 Def / 110 SpD
Sandslash: ()
75 HP / 110 Def / 65 SpD
Donphan: ()
90 HP / 120 Def / 60 SpD
Claydol: ()
60 HP / 105 Def / 120 SpD
Starmie: (Recover)
60 HP / 85 Def / 85 SpD
Blastoise: ()
79 HP / 100 Def / 105 SpD
Armaldo: ()
75 HP / 100 Def / 80 SpD
Torkoal: ()
70 HP / 140 Def / 70 SpD
A huge list yes, but many of these Pokemon were quickly eliminated as well. Hitmontop's only purpose would be to stop Tyranitar, so if I had it covered, it's gone. Sandslash is a worse Donphan (who can cover Tyranitar nearly as well as Hitmontop), and Claydol sucks. Blastoise's lack of Recover means I'd rather use the less bulky Starmie. Armaldo just doesn't wall anything. That left Torkoal, Starmie, Donphan, Tentacruel, and Forretress. I liked Torkoal, Starmie, and Tentacruel to stop Infernape. I really wanted to use Donphan because it can Knock Off, Rapid Spin, and use Assurance on those Ghosts (and incoming Azelf / Celebi / Starmie), but because I decided through testing that Hippowdon is just too good not to use with those stats, Sand Stream, and Slack Off, and because Hippowdon and Donphan are too similar, I ended up not using Donphan, lowering it down to Starmie, Tentacruel, and Forretress (Torkoal was eliminated because all it does is stop Infernape and Heatran, something Starmie and Tentacruel do, but they cover other stuff, too).
GHOSTS
Drifblim: ()
150 HP / 44 Def / 54 SpD
Dusknoir: (Pain Split)
45 HP / 135 Def / 135 SpD
Spiritomb: (Pain Split)
50 HP / 108 Def / 108 SpD
Drifblim's typing means it's weak to Rock, Ice, and Electric, at least one of which is on most Rapid Spinners. The Stealth Rock weakness also hurt. A statistical analysis shows that Drifblim's HP does not make up for its defenses compared to the other two, either. I started out using Dusknoir here, but eventually switched to Spiritomb primarily because of Pursuit. I liked Dusknoir's ability to wall Heracross, but Spiritomb stops Azelf, Gengar, PorygonZ, and a whole bunch of other threats better (and isn't weak to Pursuit). Woohoo! I finally have a set Pokemon!
WISH
Jirachi: (Wish)
100 HP / 100 Def / 100 SpD
Blissey: (Softboiled, Wish)
255 HP / 10 Def / 135 SpD
Salamence: (Roost, Wish)
95 HP / 80 Def / 80 SpD
Togekiss: (Roost, Wish)
85 HP / 95 Def / 115 SpD
Kangaskhan: (Wish, Early Bird Rest)
105 HP / 80 Def / 80 SpD
Clefable: (Moonlight, Softboiled, Wish)
95 HP / 73 Def / 90 SpD
Gardevoir: (Wish)
68 HP / 65 Def / 115 SpD
Hypno: (Wish)
85 HP / 70 Def / 115 SpD
Lickilicky: (Wish)
110 HP / 95 Def / 95 SpD
Wigglytuff: (Wish)
145 HP / 45 Def / 50 SpD
Of these, I liked Jirachi, Blissey, Salamence, Kangaskhan, and Gardevoir the most for their Wishing abilities alone. Lickilicky has Knock Off, which means it's OK, and Wigglytuff can Perish Song (and for those underestimating its Special Defense, it can take a SpecsMence Draco Meteor, Wish, and then Protect on the follow up hit, but it needs a ton of EVs to do so, and obviously cannot switch in). In the end, I decided that Lickilicky and Wigglytuff's inability to wall things removed them from consideration. Gardevoir was a cool idea I had to stop Heatran (Trace Flash Fire), heal itself on enemy Blissey (trace Natural Cure), and a whole bunch of other fun scenarios with Trace. I still haven't tested that one, but some day, it will make it onto one of my teams. :)
Kangaskhan's downfall was that Scrappy and Wish are illegal, and I don't use illegal movesets. I wanted to use Wish, Protect, Roar, Return / Double-Edge with Scrapy (mostly for Gengar). Salamence is cool with Wish, Roar, Draco Meteor, Flamethrower, and further removes any fears of Heracross. I decided I could cover Heracross better with other Pokemon, and selected Jirachi as my first Wisher. I chose it over Blissey because it, unlike Blissey, resisted Togekiss's Air Slash, PorygonZ's Tri Attack and Hyper Beam, and could stop Weavile thanks to the Ice Punch resist and no weakness to Brick Break. Resistance to Stone Edge for CB Tyranitar was just icing on the cake. However, I decided I wanted something that could take random Fire moves (as are common on just about every special and mixed sweeper), so I eventually went to Blissey. Jirachi and Blissey were both functioning in the capacity of the special wall.
PERISH SONG
Politoed: ()
90 HP / 75 Def / 100 SpD
Mismagius: (Pain Split)
60 HP / 60 Def / 105 SpD
Lapras: ()
130 HP / 80 Def / 95 SpD
Celebi: (Leech Seed, Recover)
100 HP / 100 Def / 100 SpD
Wigglytuff: (Wish)
145 HP / 45 Def / 50 SpD
I decided Politoed wishes it were Lapras, thanks to Thunderbolt and STAB Ice Beam, so it sucks. Wigglytuff, as mentioned, can't wall anything. Mismagius was eliminated from the Ghost pool because of its poor Defense. This leaves Lapras and Celebi as Perish Song Pokemon. These, like Wish, were optional.
So the kind of team I started out with was:
Drapion / Tentacruel / Forretress
Skarmory / Forretress
Starmie / Tentacruel / Forretress
Dusknoir (eventually changed to Spiritomb, but that's not how it started)
Jirachi (eventually changed to Blissey)
??? Lapras or Celebi ???
Because Perish Song was the most optional move on here, I should leave that slot open until I know what I need to cover still.
Forretress appears to be the obvious choice because it can take the slot of 3 team members. However, if I used Spikes and Toxic Spikes on the same set, it wouldn't get a chance to set all of that up against most teams. The main thing is to try and spread out all 3 forms of spikes, so that way you can usually set up at least 2 of the 3 against most teams. This also means you don't want to have like, Skarmory / Forretress / Scizor or something, or teams with Fire moves mean you won't set up anything. For this reason, if I choose Skarmory, I'm probably not using Forretress. Skarmory and Forretress also wall pretty much the same things. Overall, I prefer Skarmory, so if Forretress has suitable replacements in other Pokemon...
For Toxic Spikes, it was Drapion or Tentacruel, and for Rapid Spin, it was Starmie or Tentacruel. Again, in the interest of not duplicating my walls, I decided not to use Starmie and Tentacruel, since they wall similar things. Drapion and Starmie went on my team, and looking at both, they do an awesome job, so Skarmory, Starmie, and Drapion all work together. This means the team is
Jirachi
Skarmory
Drapion
Starmie
Dusknoir
???
Looking at that line-up, I didn't see much wrong with it, except for something like a smart Heatran. To shore up this weakness, as well as to add Sandstorm into the mix to reduce the power of enemy weather teams, I added Tyranitar with DD, Crunch, Ice Beam, EQ to cover a bunch of enemy walls and to clean up at the end. I slapped Stealth Rock on Jirachi, because it had a free slot. However, play testing revealed I had overlooked one important Pokemon: Tyranitar. I realized just how good Hippowdon is, so I added it. This freed up my Jirachi to use Fire Punch instead of Stealth Rock (I was using Wish, Zen Headbutt, U-Turn, Stealth Rock).
But by removing Tyranitar, I opened myself up to Heatran. Starmie's advantage is that it has Recover and it's fast. Heatran's advantage is that it does over 60% to Starmie with a Fire move, and OHKOs with some other stuff. I was considering making such sweeping changes as adding a Rest, Sleep Talk, Rock Slide / Stone Edge, Whirlwind Aerodactyl in somewhere, possibly by combining Drapion and Starmie into Tentacruel. Instead, I did do that (added Tentacruel), but I replaced Jirachi with Blissey (it helps with SpecsMence). This gave me one free slot, and, realizing how weak losing Starmie makes me to Gyarados, I snuck Celebi into my team. I was worried about Togekiss and Raikou, so I used the Blissey set I have now, except with Snatch over Toxic.
That didn't work as well as I hoped, because my prediction wasn't accurate 100% of the time (I'm good, but not that good). I dropped Snatch for Toxic and swapped Dusknoir for Spiritomb for reasons mentioned earlier, which is how I got the team I got.
If you still have any questions on why I chose what I chose (or if you want to know what I chose for movesets and such on the early versions of my team, and why I changed), don't hesitate to ask.
So in other words, I don't use Cresselia because it doesn't fit. It walls some stuff, but it walls few things better than what I already have (Mixed Salamence and Garchomp come to mind as the exceptions), and it doesn't do anything other than wall them. Every other Pokemon on my team fits one of the aforementioned categories of stuff to do while stalling.