Yet another wp_insert_post infinite loop. What is wrong?

the problem lies with user capability when one use wp_insert_post to
give other user the ability to insert post into WordPress.
wp_insert_post uses the method current_user_can to check whether the
given user has the capability to publish a post. After that i too have
no idea what went wrong. However, this only happen when you set your
post_status as publish. If you happen to change publish into other
status such as draft, you will find that you can successfully insert
your WordPress post without the problem of going into an infinity
loop.

AND

But i want my user to have the capability of a subscribers but is able
to publish a post themselves. If you are like me, you may want to try
to bypass the checking on publish post. If you look into the code
implementation of wp_insert_post, you will find that most of the
checking are looking for the keyword publish. Another alternative to
publish your post without using the keyword publish is to use
alternative keyword, future.

http://hungred.com/how-to/wpinsertpost-infinity-loop-problem-return-blank-page/

Update

Weird! use remove_action( current_filter(), __FUNCTION__ ); before wp_insert_post and try.