Adding content of products based on subtype I have type (eg. women in clothes) and sub type (eg. jeans in women category). Now i need to add product but the product properties are decided by type(women) and sub type(jeans) and product is itself custom content type. I know in eCommerce website, this is basic situation but my project(drupal 7) is not eCommerce. I need to create this manually. 

I have created the category and sub category as custom content type and mapped subcategory to category using entity reference. Now i have created new content type "product feature" and mapped to subcategory using entity reference. Now i need to add those product feature as field to the product when admin add the product. I need help in that.
Lets start by saying that content types are not meant to be used for grouping. Drupal content (nodes) come with permission checking and invoke a lot of hooks upon loading. That is not bad per sé (and in fact required for most content), but is overkill for grouping. Your parent child structure would involve 3 node loads where you want to display one.

If you need grouping, you need taxonomy. This offers almost the same functionality as content types with regards to fields and url aliases, but is much lighter in use. To start you could recreate your reference structure using taxonomy terms. 

However, as I already explained in the comments, why not use nested taxonomy? You could place all your categories in one taxonomy vocabulary, allowing you to see, edit and rearrange all terms from one page. It would make your system much more maintainable. Also the fact that you state that you need second level terms to show up after selecting the first is possible. Have a look at Hierarchical Select, Simple hierarchical select and Client-side hierarchical select. These offer exact that functionality. 

Your last requirement (if there is more please edit them into the question):


  I need to list category and sub category separately


Depending on how you want to achieve this, is can be done. With views it is very easy. Add a filter to the view, select the parent term, then select that it should be empty. It should give you a list of top level taxonomy terms.