Note: I have written a page at http://www.levinecentral.com/ham/grid_square.php which does exactly what you might need. Check it out.
When I log a contact (I use HRD) I like to populate the grid square locator so that it shows the approximate distance between me and the contact. There’s a bunch of ways it can get populated and here’s what I use.
1) QRZ.com individual callsign contact data often has the grid square for a contact. If it does, HRD pulls it in. It only needs to be adjusted if the operator isn’t at his home station, such as when I operated from North Carolina.
2) In digital modes like RTTY or PSK, the contact often provides his grid square as part of the contact.
3) I use the QRZ.com GridFinder page at http://www.qrz.com/gridfinder where I have the most luck as long as I have a portion of the address. Most of the time this one site provides what is needed.
4) Next is site which is map based. http://f6fvy.free.fr/qthLocator/fullScreen.php where I can often locate, within reason, the approximate location of the contact. Also good if a contact is mobile and provides you an approximate location. You can then obtain the grid square. An example was a marine mobile station that provided his approx coords and distance off shore. I just wish this site had a way to enter in a location like Google maps to get you close to a spot quickly.
5) A final shot is at http://www.vhfdx.net/callbook/ where you can look up by call sign and see if it’s listed along with a 6 or 4 digit grid square. I’ve used this when I didn’t have anything but the call sign and there’s not record or no relevant data on QRZ.
With the combination of the above, except in maybe 2 cases so far, I’ve been able to come up with a gris square value for the contact.
Some other references:
http://www.geocities.com/vhfdx2/gridqra.html for printable maps.
http://www.arrl.org/locate/gridinfo.html is ARRL’s reference with some maps.
http://no.nonsense.ee/qthmap/ another Google map locator.
http://ric.cqham.ru/ for looking up grid squares for Russian call signs.
If you are aware of others, post them as a comment.