is there a way to change the public inspector details at runtime

im curious if this can be done

public bool useStatic;
public GameObject[] staticOjects;
public GameObject[] nonStaticObjects;

so that if useStatic = true; , then only staticOjects would show in the inspector

and if useStatic = false; , then only nonStaticOjects would show in the inspector

this is a simple version of what i would like to be able to do

You can write your own custom inspector and manage visibility in OnInspectorGUI function.
http://docs.unity3d.com/Documentation/ScriptReference/Editor.html

Somethings like this :

[CustomEditor(typeof(YourMonoBehaviourObject))]
public class YourMonoBehaviourObjectEditor : Editor
{
    private bool visible = true;
    protected SerializedProperty useStatic;

    public void OnEnable()
    {
        useStatic = serializedObject.FindProperty("useStatic");
    }

    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        if (useStatic.boolValue)
            DisplayArray("staticOjects", ref visible);
        else
            DisplayArray("nonStaticOjects", ref visible);

        if (GUI.changed) EditorUtility.SetDirty(target);
        serializedObject.ApplyModifiedProperties();
    }

    private void DisplayArray(string propertyPath, ref bool visible)
    {
        SerializedProperty listProperty = serializedObject.FindProperty(propertyPath);
        visible = EditorGUILayout.Foldout(visible, listProperty.name);
        if (visible)
        {
            EditorGUI.indentLevel++;
            for (int i = 0; i < listProperty.arraySize; i++)
            {
                SerializedProperty elementProperty = listProperty.GetArrayElementAtIndex(i);
                Rect drawZone = GUILayoutUtility.GetRect(0f, 16f);
                bool showChildren = EditorGUI.PropertyField(drawZone, elementProperty);
            }
            EditorGUI.indentLevel--;
        }
    }
}