The sheaf structure is a powerful idea that goes across many mathematical subjects and therefore it can be approached from different directions. The concept arose from topology and the concept of an open set, this is discussed further down the page.
Fibre With StructureThe page about fibre bundles here shows how reversing a map between sets gives some interesting structures. Here we extend that idea. What if we start with sets which already have some structure? The diagram on the right is intended to show a morphism between partial orders. So the blue arrows represent ≥ and the arrow 'ab' means b ≥ a. The red arrows show the morphism between the partial orders and these all need to play nicely together. 

So how can this morphism be reversed? The diagram on the right is the best I can do although somehow it doesn't seem completely correct, for instance it seems to imply that c ≥ a whereas the original diagram above doesn't imply that. In order to be consistent this morphism needs to be a local homeomorphism which is a function between topological spaces that preserves local but not necessarily global structure. 

Local and Global StructuresThe interesting thing is that this is dividing the structure into 'local' structure and 'global' structure. It seems natural to have morphisms that preserve global structure but may compress local structure. This does give a morphism that is reversible and we get a fibre bundle with some extra structure. However, that's not what we want for a sheaf, what we want is a morphism that preserves local structure but may compress global structure. 

Local HomeomorphismIn order to be reversible this morphism needs to be a local homeomorphism, as in the example on the right, here the local structure is preserved. 

Reversing this morphism gives a fibre structure, as described on this page, but with additional structure. Now the local structure inside the xy type (on the right of the diagram) maps to the same structure between the family of types. This is also a comma category as described on this page. 
Here I have just rotated the above diagram by 90 degrees just to show in the same way we did with fibres. So each element x,y of x>y indexes a type. 

SectionIf we have a subset (subtype?) of the indexing type then this translates to a subset of the type family. 
So far we have only described only part of what a sheaf is. What is described so far is a presheaf, this gives us lots of copies of the local structure. Making a presheaf into a sheaf allows us to glue these local structures together to form a more interesting structure.
Presheaf in Category Theory
A 'presheaf' category is a special case of a functor category (see page here). It is a contravarient functor from a category 'C' to Set.
Since it is contravarient it is usually written:
C^{op}→Set
or
Set^{Cop}
There is more about presheaves on the page here.
Presheaf Example  Single Element SetA very simple example would be where C^{op} is a single element set (terminal object in set). Hom( C^{op}, Set) therefore contains set of single arrows, one for every element of the set. 

Presheaf Example  GraphHere C^{op} is a category with two objects E (for edge) and V (for vertex) also two arrows s (for source) and t (for target). This allows us to build a structure on top of set where the diagram on the right commutes. We can therefore build up complex graphs from individual vertices and edges. 

Presheaf Example  Relational DatabaseHere C^{op} is a database schema. This imposes a structure on the sets which are the database tables. This implements a category of simplical databases. 
Presheaf on a Topological Space
So far we have not yet discussed a sheaf on a topological space, this is where the concept originated and adds more interesting ideas.
We can get to this concept by replacing the sets discussed above with 'open sets' (more about open sets on page here).
We can have a presheaf of any structure 'A' on a topological space 'X'.
A presheaf of sets 'A' on 'X' is valid but it does not give much structure to relate the open sets. Something with an abelian group structure for example (such as vectors) gives us more structure to work with. More about open sets on page here.
A presheaf of abelian group 'A' on 'X' assigns to each open set UX an abelian group A(U). and that assigns to each pair UV of open sets a homomorphism called the restriction r_{U,V} : A(V) > A(U) 

in such a way that r_{U,U} = 1 (identity map) 

r_{U,V}r_{V,W} = r_{U,W} (composition) 
Presheaf in Category Theory
In category theory terms:
 X is a topological space
 A presheaf of abelian groups on X is a contravariant functor from the category of open subsets of X and inclusions to the category of abelian groups.
Let C=Top(X) the category whose objects are the open subsets of X. C can be represented as a poset of open sets in a topological space with the morphisms being inclusion maps.
In the same way as for fibres we usually reverse the arrow so that it is a contravarient arrow from C^{op} to Set: 
A presheaf on a category C is a functor F : C^{op}> Set
For instance a presheaf can be a contravariant functor from the category Top(X) to the category Ab of Abelian groups (which may also have more structure).
Sheaves are discussed from a category theory point of view on the page here.
Developing Fibre Bundle ApproachThe page here introduced fibre bundles. For example, where there is a family of types indexed by elements of another type. 

The type families in fibre bundles are disjoint. One way to extend that concept is to allow an overlapping type family. 
open sets  simplectical complex  
In some cases we can convert between open sets and simplices. see Wikipedia articles: 
Sheaf and CoSheaf
Allow us to translate between physical sources of data and open sets or simpicies.
sheaf  Cosheaf 

vertex weighted  hyperedge weighted 
vertex has nontrvial stalk.  toplex has nontrvial stalk. 
All restrictions are zero maps  All extensions are zero maps 
The resulting sheaf is flabby  The resulting cosheaf is coflabby 
Sheaf
A sheaf is a presheaf that satisfies the following two additional axioms:
 (Locality) If U is an open covering of an open set U , and if s , tF(U) have the property s  _{U i }= t  _{U i } for each set U_{i} of the covering, then s = t and
 (Gluing) If U is an open covering of an open set U, and if for each iI a section s_{i} is given such that for each pair U_{i} ,U_{j} of the covering sets the restrictions of s_{i} and s_{j} agree on the overlaps, so s _{i}  _{U i ∩ U j }= s _{j}  _{U i ∩ U j}, then there is a section sF ( U ) such that s  _{U i} = s_{i}for each iI.
Where the notation used is:
 s  _{U i} means s restricted to U i
 s is a section of the space over U
more notation see box on right.
Diagrams
We can think of this in a combinatorics way. The relations are shown more clearly in an attachment diagram here. This shows subset relations with the arrows going from lower dimension to higher dimension. 
A sheaf assigns some data spaces to the attachment diagram above. In this case reals (ℜ)  A sheaf of vector spaces. Each such set is called a stalk over the simplex.

Section  an assignment of values from each of the stalks that is consistent with the restrictions.
Sections can be:
 Global  defined everywhere.
 Local  defined for some part.
If all local sections extend to global sections the sheaf is called flabby/flasque (don't have interesting invariant's).