Hi, running Postgres 8.4.x, 2.6 release version runtime libraries.  I guess I don't know for sure that the problem is related to CloneEntity.  That is an extension method based on other code here related to cloning.  It also does resetting as new, and I use MarkSavedEntitiesAsFetched = true.
I'm guessing the issue is that new_re's collection of DeletedEntries from the join table is null?  Anyway, thanks for giving it a look.
               //other Model changes
               Model.Deleted = false;
               //make a copy with all the updates
               ReportEntryEntity new_re = Model.CloneEntity();
               Model.CancelEdit(); //revert all changes
               Model.Deleted = true;
               Model.DeletingAnalyst = new_re.AnalystUserName;
               Model.AnalysisRecordTimestamp = DateTime.Now;
               using (DataAccessAdapter adapter = Create.Adapter())
               {
                  s_ILog.Debug("Saving");
                  adapter.SaveEntity(Model);
                  adapter.SaveEntity(new_re);
                  BucketJoinEntity joiner = new BucketJoinEntity();
                  joiner.DeletedIntermediate = Model;
                  joiner.Replacement = new_re;          //NullReference HERE
                  joiner.JoinReason = 0; //Manual
                  adapter.SaveEntity(joiner);
                  s_ILog.Debug("Saved");
               }
This throws at the commented line.  Here is the stacktrace.
at SD.LLBLGen.Pro.ORMSupportClasses.EntityFields2.get_Item(String name)
   at SD.LLBLGen.Pro.ORMSupportClasses.EntityBase2.SyncFKFields(EntitySyncInfo1 syncInfo)
   at SD.LLBLGen.Pro.ORMSupportClasses.EntityBase2.SetEntitySyncInformation(String fieldName, IEntity2 relatedEntity, IEntityRelation relation)
   at SD.LLBLGen.Pro.ORMSupportClasses.EntityBase2.PerformSetupSyncRelatedEntity(IEntity2 relatedEntity, PropertyChangedEventHandler propertiesChangedHandler, String fieldName, IEntityRelation relation, Boolean connectToSaveEvent, String[] forfNames)
   at Zetec.Analysis.EntityClasses.BucketJoinEntity.SetupSyncReplacement(IEntity2 relatedEntity)
   at Zetec.Analysis.EntityClasses.BucketJoinEntity.SetRelatedEntity(IEntity2 relatedEntity, String fieldName)
   at SD.LLBLGen.Pro.ORMSupportClasses.EntityCollectionBase21.PerformSetRelatedEntity(TEntity entity)
   at SD.LLBLGen.Pro.ORMSupportClasses.CollectionCore1.PerformAdd(T item)
   at SD.LLBLGen.Pro.ORMSupportClasses.CollectionCore1.Add(T item)
   at Zetec.Analysis.EntityClasses.ReportEntryEntity.SetRelatedEntity(IEntity2 relatedEntity, String fieldName)
   at Zetec.Analysis.EntityClasses.BucketJoinEntity.set_Replacement(ReportEntryEntity value)
   at ReportEditor.ViewModel.ReportEntryViewModel.FinishedEditing(Boolean save) 
Here is a trimmed DDL
CREATE TABLE report_entries (
        report_entry_id SERIAL PRIMARY KEY,
        deleted boolean NOT NULL,
--snip
);
CREATE TABLE bucket_joins (
        deleted_id integer NOT NULL,
        report_entry_id integer NOT NULL,
        join_reason integer NOT NULL,
        PRIMARY KEY(deleted_id, report_entry_id)
);
ALTER TABLE bucket_joins ADD CONSTRAINT fk_report_join
        FOREIGN KEY (report_entry_id) REFERENCES report_entries (report_entry_id) ON DELETE CASCADE
;
ALTER TABLE bucket_joins ADD CONSTRAINT fk_deleted_join
        FOREIGN KEY (deleted_id) REFERENCES report_entries (report_entry_id) ON DELETE CASCADE
;