It really depends on what you are looking for.
If you want a Pokemon game that focuses on the battling aspects, get Pokemon Black. It has an entire city devoted to battling and includes more Rotational Battles, a new battle type that requires a good amount of strategy to win.
If you're more of a collector, Pokemon White would be more suited for you. An entire forest exclusive to the game encourages you to try to capture whatever you can find. This version also focuses more on teamwork than strategic deployment in battles, as Triple Battles are more prevalent here.
If you'd rather be involved in a more classic Pokemon experience, HeartGold and SoulSilver are for you. Black and White make TM's usable any number of times instead of just once, and badges are not required to use specific HMs outside of battle. HeartGold and SoulSilver stay true to those classic parts, though, and just carry the weight of nostalgia with them, if you've played the original Gold or Silver. The differences between HeartGold and SoulSilver are negligible, so just choose based on what you think sounds better.
Hope that helps!
-Anonymous