Stealing is fine the way it is, it's nerved enough.
The whole problem is in the fact that people assume guarded towns means you're protected against people who want to do bad things.
The whole player vs. character discussion is crap. You have to see things from your character's point of view, not you as player.
To "fix" some of the problems, some changes should be made:
- when losing protection, for whatever reason, the unprotected status should stick for 1-3 real-time hours. Perhaps the time could depend on reputation. For instance: antipathy (-300 to -900) or worse means the max penalty of 3 hours, neutral means 2 hours, accepted (300 to 900) or better means 1 hour. This should be calculated after the reputation drop from the action that caused you to lose the protected status.
- unprotected people caused trouble for the npc faction. They should be shot on sight by the guards when they enter a town
- unprotected status should be expanded to encounters as well. As unprotected people caused trouble with that specific faction, they should be shot on sight in encounters with that faction as well
- only guards loot, no matter who shot who. Looters should be shot on sight, lose protection and get the same reputation penalty as thieves. People who lost stuff to PK in guarded towns like NCR should be able to buy it back from the sheriff at a fee of 25% of the value (guards have to make a living too). For thieving victims this would be nice too, but I think it will be very hard to implement. After all the items already changed owner
- getting rep back by selling stuff to traders should be limited to getting it up to -300 max. That's enough to be safe in encounters again, assuming you're not unprotected. The safe to shoot people status for idolized people should either disappear altogether or it should be limited to encounters only.
Currently when staying logged on, you keep your current reputation. There's no increase or decrease. When logged off your rep increases or decreases depending on it being below -200 or above +200. So basically bad rep encourages people to log off, good rep encourages people to stay on. Bad rep should encourage you to correct it, which means staying logged on and do some tasks or quests to improve it.