Try using the --%
operator to put PowerShell into simple (dumb) argument parsing mode:
curl.exe --% -ku user@email:mypass -X PUT -d "data={\"password\":\"keypass\"}" https://build.phonegap.com/api/v1/key
This is quite often useful for invoking exes with argument syntax that runs afoul of PowerShell’s argument syntax. This does require PowerShell V3 or higher.