The current system of truces/alliances is totally informal, conducted through game chat. (Hopefully, unless someone is cheating with a secret alliance.)
The problem is, this can be easily missed. I can't tell you how many times I've played my turn, only to check the game chat and see someone has offered me a truce that would've been advantageous to both of us. And, of course, the reverse-- I've offered a truce that goes unremarked on, and it's not clear if the person is intentionally ignoring the offer or simply didn't read it.
People have taken to writing wall messages to say a truce has been offered in the chat, which is an imperfect solution at best.
Detailed Proposal:
"Formal Alliances" would be another game option, like spoils or fog of war. The options would be "None," "Breakable," and "Unbreakable" (more on these last two in a second).
Much like how you can enter a game chat whether it's your turn or not, you'd be able to offer a truce to anyone at any point in the game. I imagine this would be either a button next to their name at the top, or another column in the stats section.
At the beginning of any turn, if someone offers you a truce, you have to affirm or deny, just like you have to chose your cards before making your play.
Any affirmed alliances will be marked in the player section at the top, with a notation reading "truce with [username]".
Options
*Unbreakable would mean you absolutely cannot attack the other player.
*Breakable means you can attack the other player. This is useful for circumstances like "You can have bonus area X if I can have Y," etc. It also means you could stab the other player in the back (and they can do the same to you), so it's a strategic decision.
*Length of Truce: either a fixed number of rounds, or until every other player is dead.
Future Options
More complicated options can be implemented later, such as an "X Round Notice" option, where you can formally end an alliance, giving the ally a specific number of rounds to prepare.
Holding a truce across specific borders ("You don't attack North America, I won't attack South America) is probably pretty complicated, and I don't know how that can be controlled by the game. (Hence, the un/breakable options above.) But maybe there's a way?
Other comments:
For those who don't like alliances, I don't see a practical way of eliminating informal alliances via game chat, but having a formal option would likely discourage it.