I got pretty lucky. I had a lot of recovery items, and I usually just used used the lower levels as scapegoats to heal my others, just so I could scrape by, in fact, if I didn't get a critical on Lance's last Dragonite, I would have probably lost to be honest. Exploiting weakness was key for me though, it mainly went

Will: Feraligater/AmpharosKoga: Espeon/whatever I could just power through (the other three, but espeon I used primarily)Bruno: Feraligater/Heracross (Aerial Ace)Karen: Heracross/Feraligater/Ampharos

Lance, well, I mostly used Feraligater, I got A LOT of criticals, I was really lucky, I did use Ampharos on one of the Dragonites, but mainly Feraligater with Ice Fang and Surf to take out lance, I was so lucky jeez

Note:I forget some of the moves and there levels because i lost the game somewhere and cant find it.BTW I would recomend that you would need a couple of revives and full heal,You can also use Gengar, it can easily defeat Elite Will since Dark beats Psychic.

Probably the best in-game team I've put together. There were no holes. I was able to destroy the Elite 4 and Lance only taking faints battling Lance. Otherwise I was well matched against all of them. Every one of my pokemon were useful and used equally.