https://blog.adafruit.com/2010/06/11/aprs-radio-shield-for-arduino/
Be warned you need a license to transmit on amateur frequencies at least in the US, you will also need to hook up a transmitter for this shield.
GSMShield would also be great and is something I'm thinking about using for my project, the way the Arduino IDE is setup and the libraries already in place I'm sure it would be easy to turn text messages into commands or readable and usable data between the sender and receiver.
Here are two ways one using a long range radio frequency or the GSM network. We would need to know more exact data of your project on how to implement these two solutions to accomplish what you would like to do.
The first option is most likely going to be the lesser option if you don't have a license to transmit long range frequencies and do not have experience.
The second option is easy and all you would have to do is make sure both sender and receiver are within a GSM network.
Good luck and I'm excited to see what other solutions others may post since I'm in the same boat.