How to get the class type of a Blender Collection Property?
ID.items() is going to give you custom-properties, which is lower level and bypasses properties created by bpy.props, I suspect you want to iterate over attributes, instead of custom-properties.

You can do this instead:

scene = bpy.data.scenes[0]
for attr in dir(scene):
    value = getattr(scene, attr)
    if type(value) == bpy.types.CollectionProperty:
        print("something", attr, value)


The example above uses Python's dir and getattr functions, you can also use a Blender specific method of introspecting properties.

scene = bpy.data.scene[0]
for attr in scene.bl_rna.properties.keys():
    value = getattr(scene, attr)
    if type(value) == bpy.types.CollectionProperty:
        print("something", attr, value)


This limits the properties to Blender's data-api, and wont include functions for example.



Here is a working example based on the example in your question:

import bpy
from bpy.props import StringProperty, CollectionProperty

class MyCollectionProperty(bpy.types.PropertyGroup):
    name = StringProperty(default="")


bpy.utils.register_class(MyCollectionProperty)
bpy.types.Scene.my_collection_prop = CollectionProperty(
        type=MyCollectionProperty)

scene = bpy.data.scenes[0]
for attr in dir(scene):
    prop = getattr(scene, attr, None)
    if isinstance(prop, bpy.types.bpy_prop_collection):
        if bpy.types.Scene.bl_rna.properties[attr].fixed_type == MyCollectionProperty.bl_rna:
            print(prop, "found")


This used Blender specific data-api introspection (bl_rna).

Note: You may want to use isinstance.