Three Hour Insert
Desired memory is ~13GB granted is ~5.5GB, how much memory have you in the server ?
Is there any resource governor limits in place ?
Naturally this mean that that memory will not be available for other concurrent processes, so really is a last resort.
The DDL will help to create a more 'workable' solution, as per Pauls comment the Description column conversion is an interesting one and may be able to be tuned.
CREATE INDEX index_name ON dbo.tblDataObjectDetail ( DataObjectID, Value ) INCLUDE ( FieldID );
This should eliminate the hash join and parallel sort.
If the insert processes a significant number of rows relative to the existing contents of the target table, you may find it quicker to drop/disable the two nonclustered indexes on the target before the insert, rebuilding them afterwards. This will eliminate the spool and sorts associated with nonclustered index maintenance.
You could also consider a WITH (TABLOCKX) hint on the insert, and/or enabling trace flag 610 for this query to enable minimally logged b-tree inserts.
You should patch your instance from SP1 CU11 to SP3 CU1. Also check why the data types of the Description column do not match between source and target.