How can I prevent an opportunity I'm editing from being selected as a child Opportunity?

You can insert a Before Update trigger script on the Opportunity object. Here's an example:

if (ParentOpportunity_Id_c == OptyId){
  throw new oracle.jbo.ValidationException('You can't set a Parent Opportunity as the same Opportunity 
you are editing.')
}