How do I stop an element from populating?
I am not really clear on what you are trying to do. My guess is you are trying to add your own validation to saving an element and trying to block that with your own custom checking of content values etc?

I don't think listening to the event will help as you cannot send a message to say this element is not valid from an event listener - the event does pass you a element that is about to be saved but you cant return the modified element from the listener.

What I would suggest is building a custom fieldType that contains some validation rules that peeks in at the content of other fields.

class My_CustomFieldType extends BaseFieldType
{

/**
 All the normal filetype stuff like name etc here.
*/

public function validate($value)
{
  $errors = parent::validate($value);

  if (!is_array($errors))
  {
    $errors = array();
  }

  // DO you logic here to test then set an $variable to true or false
  // if your conditions are met then add to the $errors array below if there is a problem.
  // if you want to access other field in this element do this:
  // 
  //   $owner     = $this-&gt;element;
  //   $fieldData = $owner-&gt;getContent()-&gt;getAttribute(array('sectionId'));
  //


  if ($variable){
    $errors[] = Craft::t('You are not allowed to edit this element.');
  }


  if ($errors)
  {
    return $errors;
  }
  else
  {
    return true;
  }
}

}


Im thinking that this will be able to stop the entry being saved. Hopefully thats what you were looking for.