Heuristic evaluation is a quick, cheap and easy method to examine usability of Use interface design. Concept was initially proposed by Jakob Nielsen and Rolf Molich to find usability problems. In simple words, in this method we test design according to a list of design principles.
Nielson listed ten general principles for usable user interface, which are called as “Heuristics”. Following are those Heuristics:-
1. Visibility of system status
The system should always keep users informed about what is going on, through appropriate feedback withinreasonable time.
A good example of this is Adobe Photoshop startup screen in which you can see a list of creators, copyright note and on top it gives you the status like “Initializing”, “Reading brushes”, “Reading Preferences”, etc. So while starting, it informs user what the application is doing.

2. Match between system and the real world
The system should speak the users’ language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order. reasonable time.
Avoid using system, developer jargon, understand users language and present information in a way which user understands. This is particularly while displaying the error messages. Present information on system/website in appropriate order, most important information of top, then less and then least important at bottom. Use colors, different font size and some graphics to show the importance to the information.
3.User control and freedom
Users often choose system functions by mistake and will need a clearly marked “emergency exit” to leave the unwanted state without having to go through an extended dialogue. Support undo and redo
Provide option to escape from unwanted state. Simple and effective solution is by providing “Undo” / “Redo” options

4. Consistency and standards
Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions.
Keep consistent experience throughout the system. Use industry standards, patterns for UI components, form controls, labels, etc.
5. Error prevention
Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action.
Provide confirmation option before performing critical actions.
6. Recognition rather than recall
Minimize the user’s memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate.
Keep important information, actions obvious to users. User appropriate UI component to present hierarchical data. Provide icons which will help user to recognize the term/object.

7. Flexibility and efficiency of use
Accelerators unseen by the novice user may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions.
Provide frequently accessed/used information, actions first when user access system next time which speed up user interaction.

8. Aesthetic and minimalist design
Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility.
Avoid cluttered page design. Provide only what user wants. Add other information only if it adds value.
9. Help users recognize, diagnose, and recover from errors
Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution.
Provide usable error message. A good, usable error message should tell user about what has happened, error cause (why) and how to recover from error (where to go).
10. Help and documentation
Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user’s task, list concrete steps to be carried out, and not be too large.
Provide quick and accurate help. Generally user come up with questions like “Where is”, “What is”, “How do I”, etc. giving help in Q&A form is very effective. A good example is help in eBay.com. Also providing context-level help in forms helps user.

In above principles, there could be category specific principles also.
Heuristic evaluation is conducted by a “Evaluator”. Evaluation can be done by individuals or by group of evaluators. Evaluator typically does not perform any task, so it is more suited at the early phase of usability engineering. After conducting Heuristic, evaluator generally has a list of usability problems with reference of usability principles.
Apart from above list, there are many resources for the usability principles.Usability.gov has a good list of usability principles. You can find it here: http://www.usability.gov/pdfs/guidelines.html . ISO also has a Heuristics called as ISO 9241.
The blog is good…