This is a side effect of how echo (or, more precisely, the shell) parses the data - quotes are used to separate text strings and it would not normally expect to pass them through. You get the same result if you typed a quoted string on the command line.
The standard solution for this is to escape the quotes so that they're passed through the shell, through echo, and out to your file. Since you're escaping characters in AppleScript that are passed to the shell, which also needs to escape them, you need to double-escape, like:
set myQuotedString to "A string with \"quotes\""
do shell script "echo " & myQuotedString & " > ~/Desktop/some.txt" --> fails to include quotes
set myQuotedString to "A string with double-escaped \\\"quotes\\\"" --> note the extra backslashes
do shell script "echo " & myQuotedString & " > ~/Desktop/some2.txt" --> bingo!
That's a PITA, though. An easier solution is to just not use the shell and write it directly via AppleScript:
set myQuotedString to "A string with \"quotes\""
set myfile to open for accessfile ((path todesktopastext) & "some3.txt") with write permission
set eofmyfileto 0
writemyQuotedStringtomyfile
close accessmyfile