Unity 4.3.4 is here, and there’s still no parameter you could pass to PropertyField to disallow dropping scene objects.
If you have ILSpy or .NET reflector, you could inspect PropertyField
yourself to see how it’s implemented. As you might have guessed, PropertyField
has a switch statement internally so that it picks the right field type to use, based on your property. Here’s the part related to when the property’s type is a reference type:
case SerializedPropertyType.ObjectReference:
ObjectField(position, property, label);
Here’s that ObjectField
:
internal static void ObjectField(Rect position, SerializedProperty property, GUIContent label)
{
ObjectField(position, property, label, EditorStyles.objectField);
}
Follow along:
internal static void ObjectField(Rect position, SerializedProperty property, GUIContent label, GUIStyle style)
{
int id = GUIUtility.GetControlID(s_PPtrHash, EditorGUIUtility.native, position);
position = PrefixLabel(position, id, label);
bool allowSceneObjects = false;
if (property != null)
{
Object targetObject = property.serializedObject.targetObject;
if ((targetObject != null) && !EditorUtility.IsPersistent(targetObject))
{
allowSceneObjects = true;
}
}
DoObjectField(position, position, id, null, null, property, null, allowSceneObjects, style);
}
So at the end it’s using that DoObjectField
, which is essentially the same method used in EditorGUILayout.ObjectField
(if you follow that along, you’ll end up with DoObjectField
as well) - As you can see allowSceneObjects
is being set internally which sucks 
You could always fallback and use EditorGUILayout.ObjectField
and set your object directly. But before that you have to Undo.RecordObject(yourObject, "Some title");
if you want undo support.
If there’s a solution to setting allowSceneObjects
yourself for PropertyField
then it’s gonna be a hack, definitely a hack.