Having only just discovered GTD, I am integrating it with stuff I used to do, and one of those things was maintan an ongoing shopping list.
I use Appigo Todo on my iphone, ipad and online on my desktop. I have an undated/untimed todo titled shopping with the contect @errands. This is a checlist (which you can have in Todo). I just add things to this list when I think of them, or more robustly when I'm going round the kitchen thinking about what I need. Then when I'm in a shop, I just tick things off my list. What I'm left with, I still need to get.
Works quite well for me.