It all started when americans (US) invaded Mexico, and they were wearing their green uniforms (militar). So Mexican didn't like them and used to say "green - go" in a polite way to ask them to leave ;)
It does not mean just someone who is from the US because i am a Mexican(Or hispanic if thats what you would prefer to call me) that lives in the US (In a texas city full of mexicans and about 10 white people and 5 black :P) and i speak full spanish and know all the slang. It can be used as an insult or just in everyday conversations. By the way, to all you gringos it is not pronounced 'greeeeen-gow' *I pronounce my english correctly so i would apprecciate it if you did the same for spanish(:
1. Pinches gringos putos calling us beaners, who the fuck do they think they are!
2. Wtf Daniela, you look like a gringo today, did you use the wrong shade of foundation again?
Usually used by Latin American people to describe Americans. When describing an American the word is usually not negative or derogatory. When describing a white appearing person of Hispanic origin, it can be extremely offensive. Calling a Hispanic person gringo(a) is denying their culture, heritage and history. Don't use it this way if you don't want to get hurt.
Me: I'm from Peru, I grew up there actually.
John: Really? I'm from Brazil and would have never guessed because you're so white.
Me: That's a little offensive.
John: Whatever gringo.
*John should have known that he was about to get beat up*