How can I create a custom view other than content types? How can I create a view that's based on a custom table from a custom module. 

Actually in creating views path I can see options of view types as:


  View type:
  
  Node: Nodes are a Drupal site's primary content.
  
  Comment: Comments are responses to node content.
  
  File: Files maintained by Drupal and various modules.
  
  Node revision: Node revisions are a history of changes to nodes.
  
  Term: Taxonomy terms are attached to nodes.
  
  User: Users who have created accounts on your site.


But when selecting the node option I can only select from node table and selecting user I can select from the user table for displaying the data from these tables. But if I need to display data from the custom tables how can I select that table on creating the query and display them on the view pages?
You need to implement hook_views_data to tell Views about your tables and how the data in your tables relates to other tables defined to Views (if it does).  Here's a good tutorial to get you started:
http://www.grasmash.com/article/demystifying-views-api-developers-guide-integrating-views

Depending on the nature of your data, you may, alternatively, consider defining your custom data as a custom entity type.  If you do that through the Entity API module, then it will provide Views integration "for free".