I found this plugin very useful ajaxed-status
It was created for post and page, and I want to apply it on media library. so I commented out the line if (is_admin() /*&& ($pagenow=='edit.php' )*/)
and added this:
add_filter ( "manage_upload_columns", array ($this, 'add_new_columns' ) );
add_action ( "manage_media_custom_column", array ($this, 'manage_columns' ), 0, 2 );
Then, I got the status column on Media Library list page, and I can click the status to make it change to new status. But, the change can't be saved. From Firebug, I can see the ajax response is correct. I hope the original author, @Bainternet , or other people, may help figure this out.
update
I tried update_post_meta to save the $status as meta. It works. Just can't save it as post_status by wp_update_post.