You can fight your rival in various places, some including:
About 10 times then you can fight your rival at certain days at the Pokemon League.
In different places. First fight: After Professor Elmo rings you up to say there's a disaster at his lab, on the way back down Cherrygrove your rival comes and challenges you. Second Fight: At Azalea town after you rescue all the Slowpoke and you go down to the forest. Third Fight: I can't remember the rest. Last Fight: At the League. Then at Dragon's Den, you can fight him once a week. I hope I helped. Good luck with Heartgold and Soulsilver ;)
The only way is to get a action replay card and use catch trainer's Pokemon when you fight your rival.
Your rival will have Chikorita if you pick Totodile as your starter pokemon.
Yes.
You battle him/her in different places
Your rival challenges you at the Pokemon league Mondays and Wednesdays.
Well, for all I know you fight your rival about 12 times and then on certain days, you get to fight him at the Pokemon League.
Yes, you can fight the Kanto Gyms in Pokémon HeartGold.
You can vs your rival every monday on your game at the Pokemon League.( this also counts for HeartGold too.)
Sundays and Thursday at the tranier house
Battle your rival, find two clefary's and a home