The mistake was not that of the player but the players. When I play games its not an individuals responsibility to remember to do things. If something is compulsory then all players should be pointing this out. You shouldn't keep quiet to try and get some sort of advantage if thats against the rules. Here is how I would handle this situation.
1) the rules for building a city are
When you upgrade a settlement to a
city, put the settlement (house) piece
back in your supply and replace it
with a city piece (church).
To clarify this was not an optional decision. The player paid their cards so they must get there city. The player who mistakenly rolled the dice before there turn was at fault. Personally I would just have the player build the city and then re-roll the dice. That was the rules haven't been broken by a player not getting what they paid for and they did so without information of what they next dice roll must be.
2) The relevant part of the rules is
After discarding occurs, you also steal 1 Resource Card at
random from a player who has a settlement or city
adjacent to this new hex.
Like above this was not optional. You must steal a resource card if one is available. The second player should not have taken there turn and the player should have been reminded to move the robber.
I would have him return the two development cards (and shuffle them in) and allow the player to steal from them. I get this is frustrating and the player with the robber may be making there decision based on what happened next but that player should not have taken there turn.
as a final point you say "I can say we got in a big fight though." if your getting into fights about boardgames and trying to manipulate rules to win and falling out with your friends over it then maybe this isn't the hobby for you.