Is it possible to limit the level at which entries can be selected from within an entries field?
There's already a popular feature request for this:
"Entry Type" setting for Entries fields

But yes, it's currently also possible to do this by extending the default entries field type
and adding your custom criteria with getInputSelectionCriteria().

class BusinessLogic_CustomEntriesFieldType extends EntriesFieldType
{
    public function getName()
    {
        return Craft::t('Entries (custom)');
    }

    protected function getInputSelectionCriteria()
    {
        return array(
            'level' =&gt; 2
        );
    }
}