Create an object in the BGE via python without using an inactive layer
Yes, but only via LibLoad (which likely isn't what your after).

You can use LibLoad/LibNew to dynamically load data, then instance that.

You can load data from another blend file or, you can load an existing mesh (but NOT an object).

See these functions:


http://www.blender.org/documentation/blender_python_api_2_69_release/bge.logic.html#bge.logic.LibNew
http://www.blender.org/documentation/blender_python_api_2_69_release/bge.logic.html#bge.logic.LibLoad