I believe you can add a filter to ` upload_mimes` to restrict to certain types.
The hook: [http://adambrown.info/p/wp_hooks/hook/upload_mimes][1]

The filter:

    add_filter('upload_mimes','restict_mime'); 
    
    function restict_mime($mimes) { 
        $mimes = array( 
                    'jpg|jpeg|jpe' => 'image/jpeg', 
                    'gif' => 'image/gif', 
                    'png' => 'image/png', 
        ); 
        return $mimes;
    }

From what I understand this will not work for admins or any user with the `unfiltered_upload` 
capability.
Also have a look at this post https://wordpress.stackexchange.com/questions/8107/limit-image-upload-to-one-and-disable-audio-video-and-other-document-file-types

An alternative to control size limit would be to use .htaccess or php.ini:

For upload limit you can set in .htaccess one of the following;

    LimitRequestBody 1073741824  //( 1MB)
    php_value upload_max_filesize 1M
    php_value post_max_size 1M

For php.ini you can set `upload_max_filesize = 1M`






  [1]: http://adambrown.info/p/wp_hooks/hook/upload_mimes