Just to boil it down and make it simple:
Any game with classes / gear etc can never be totally balanced. Some games come closer to others, but in the end there is always a class / spec that is better at a role than another spec/ class.
How to deal with this:
1) Most players do not want to have to grind a alt of every class. A easy way to deal with this is to allow players to either:
a) Change classes kind of like how SWG did it after the NGE where you can pay a increasing amount to change your class and maintain your level.
b ) allow re-specs of all skills if skill based and have it cost something, but nothing insane.
2) Balance around group combat and the trinity.
One of the best systems I have seen for this is one where you may make spec/ class based builds have important group based buffs, and limit group size to 5..8 ... not sure the exact number ( depends on the feel of the game) so that groups of people make groups to go into pvp with.
The way you can make players have to play with a wide variety of characters and not all just stack say 7x Sword Mages like 1999 UO was is to:
Allow the tank class to single taunt players and aoe taunt groups.
This one simple change makes tank type specs viable in pvp. It allows healers to heal and makes the groups coordinate healing cool downs, major DPS cool downs etc.
Everquest 2 did this very well, where you basically needed a really good tank, a group healing class, a single target healer to focus your tank, and then you could use the last spots for all AOE dps, or a AOE and a good single target etc.
Some fights against bad/ less powerful groups would be fast of course, but when you ran into a decent group running the right setup and you fought them suddenly the fight turns into what we all want:
Which group can play their class the best, run their rotation the best, coordinate their rotation as a group the best etc.
Through this group fighting you can allow different specs to shine at their roles and avoid a system where... hey let's all be Bright Wizards because they are all just better than everything else.
Of course you still need to tune and cannot have glaring imbalances, but if you can tune it enough to get the balance reasonably close you can come away with a really fun pvp system.
Another option is what UO boiled down to, where people heal themselves, can do CC and do DPS and basically the viable PVP spec boils down to one setup with slight variations.
UO was a great game when I played it from 1997-1999.. and everyone who pvp'd was a 7x Swords mage ( very few would use Quarter Staff/ Mace) and it was balanced in that when you fought you and your opponent had access to the same skills and the fights came down to who was the best at timing, and also who prepared the best before the fight ( potions/ poisons/ trap boxes to get out of CC etc)
Another thing that makes PvP fun are titles that you gain over time from killing people that if you die you begin to lose the titles.
It's a fun way to have a status symbol that does not effect game play but is a reflection of how long you can go without dieing.
In EQ basically if you killed people at your Title level or higher you would gain better titles, and say if you were at the highest title and died to someone just starting you would lose a ton of "title points" and possibly drop a rank or two.
Another great thing is not to do full loot pvp, but basically allow a random item to potentially drop on your corpse when you die, and then give players a way to get an item that protects items but only allow them enough of these items at once to to protect everything they wear except a few pieces, and include the inventory slots as well for a potential item to be dropped.
Looting a full corpse of items in PvP is often not practical and having that chance to lose/ gain a powerful item ( even if it's a small chance) adds a sense of risk and reward and also helps the economy by forcing players to replace items over time.
So to re cap:
Allow the "Tank" class to taunt players
Give Characters group wide buffs to force grouping ... the buffs need to be powerful enough to force this( prevents Zergs to an extent)
Allow players to keep their current skill points/ level and to reset these easily without having to re-grind anything.
Have titles that show off how well your group has done that can be lost through death to other players.
Have the ability to protect your gear, but have a % chance to drop 1 piece of un-protected gear or an item in your inventory on death to other players.
oh and PS... if you are making a big world with no instances please straight up steal UO's rune / Recall/portal system.
This was where you could mark locations onto runes and either recall directly to them or open gates that you and other players would use to move through the world.
Allow a thief class who can steal from other players and try to escape... and make a Tinker class/ skill system that allows you to trap boxes/ doors etc that can kill other players! it's something super fun no game has done since UO that really adds something great to the community and the feel of the world!