I lived in Williamsburg and visited relatives in NY often. Though I didn't go to Buffalo, more like the Binghamton area, I can tell you how I went. First of all we avoided the DC metro area like the plague, everytime we had to use the Beltway it was a mess. That said, here's my route. Interstate 81 south to Virginia, Route 17 south in Winchester, continue on 17 through Warrenton eventually leading to Interstate 95 south. Around Richmond take 264 to Interstate 64 east.
It may seem a little out of the way but at least we were still moving as opposed to stopped in traffic on the Beltway. Got stuck on the Beltway one Christmas and were held up 3 hours, never again.
Now I live in the Charlottesville, VA area and still take a similar route to NY.