I've just found the issue: it's in the basic HTTP Authentication. For some strange reason, even if i specify Credentials, WebClient submit the first POST request without specifying the credentials in the HTTP Header. After the server replies with a auth-request, it submit the second POST request specifying, correctly, the credentials. In those 2 retryies, my application sends the file 2 times! (That's why i experienced upload activity even after the file was completely sent)
The solution is to force the HTTP basic authentication by manually adding the Authentication header (and deleting the WebClient.Credentials.. line :
string authInfo = userName + ":" + userPassword;
authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
req.Headers["Authorization"] = "Basic " + authInfo;
This way the 1st (and only) POST request, will be correctly submitted with Authentication header, and the report progress is correctly (just for sharing, i report progress in my progressbar as (e.ProgressPercentage * 2) for the reason above.