This is my second answer since question was updated.
I was following link provided by @MikeOryszak and I did some testing. This is the PowerShell script that uses SP web service with custom credentials to insert data:
$items #ListItem collection
$siteUrl = "http://mySite"
$fieldsToCopy = @("Title", "SomeOtherField") #fields to copy
#Build batch
$batch = "<Batch>"
for ($index = 0; $index -lt $items.Count; $index++) {
$methodId = $index + 1
$batch += "<Method ID='$methodId' Cmd='New'><Field Name='ID'>New</Field>"
foreach ($field in $fieldsToCopy) {
$fldValue = $items[$index][$field]
$batch += "<Field Name='$field'>$fldValue</Field>"
}
$batch += "</Method>"
}
$batch += "</Batch>"
#Make webservice call
$wsProxy = New-WebServiceProxy -Uri $siteUrl/_vti_bin/lists.asmx -Credential [DOMAIN\USER]
#You will be prompted for password
$xmlB = [xml]$batch
($wsProxy.UpdateListItems($targetListId, $xmlB )).ResultStatus
Note: I have tested this on single server only with 'primitive' field types and it is working. There are many ways this script can be upgraded but I have done this just as 'proof of concept'