According to the documentation listreceivedbyaddress{0,true} will provide a list of all the addresses in the wallet. In testing I discovered this wasn't accurate however as change addresses were not included even if they held a balance. So I do that first, and then run a second pass with listunspent to grab any missing addresses.
FYI if the user has to have bitcoind installed that's all that's required to use my library if you wanted to go that route. The library already has a mlib.getaddresses function to enumerate all addresses in the connected wallet with the above method (just returns a string array of addresses). I'm not sure if that's in the old version but I'll be pushing my new v2 library up to git this weekend anyway
Excellent. Getaddresses is what i'm looking for (i'm now integrating it with my wallet, hope to be ready for testing next week =).