I've been thinking around the problem a bit and I'm starting to think the best way forward might be to just scale both of the variables first, presumably using svymean and svyvar.
dstrat2 <- transform(dstrat,
z_api99 = (api99 - svymean(~api99, dstrat))/sqrt(svyvar(~api99, dstrat)),
z_api00 = (api00 - svymean(~api00, dstrat))/sqrt(svyvar(~api00, dstrat)))
svyglm(z_api99 ~ z_api00, dstrat2)$coefficients
This gives 9.759047e-01, which is the same result as using:
library(weights)
wtd.cor(apistrat$api99, apistrat$api00, weight = apistrat$pw)
It has the advantage that it could be used with pretty much any survey design type. It also provides a way of getting the standardised beta coefficients if there are more variables. It isn't quite what I was after with the original question, but it might be the best way if there isn't a specific option.
If anyone else can confirm if this works or not, or if there is a better way, then I'd be very grateful for any further comments.