Tech stealing can't be prevented, but can be sanctioned by losing bulbs or techs. Not a perfect solution, but it's the best available. I'm in favour of putting conquercost (or whatever the name is) at 100%.
However, I'm actually more inclined toward "yes" city trading.
The main objection to this is that "one player can get Democracy and all cities on the front to prevent revolts", while the other one can build army in the background. I don't see any other abuses. (Apart from one player quitting and giving away his cities which, technically, isn't even an abuse).
1. This includes logistic difficulties with territory, corruption and stuff
2. I'm personally more and more sickened by the "revolt" option; it's unrealistic, destabilising and insane. I would be willing to support *anything* that decreases its power, including massive giving cities to a democratic ally, no matter how remote those things are.
3. Trading cities is a realistic feature and simplifies things very much; you can still trade cities, but require some technical nuisance with breaking alliance, breaking peace, conquering a city, reforming the alliance. Since it can't be prevented, but only made a nuisance, I'd be against banning it.