<?xml version="1.0" encoding="utf-8"?>
<InstanceReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>2.0.0.10</Version>
  <hasSegments>false</hasSegments>
  <ReportName>Commitments and Contingencies</ReportName>
  <ReportLongName>1130 - Disclosure - Commitments and Contingencies</ReportLongName>
  <DisplayLabelColumn>true</DisplayLabelColumn>
  <ShowElementNames>false</ShowElementNames>
  <RoundingOption />
  <HasEmbeddedReports>false</HasEmbeddedReports>
  <Columns>
    <Column>
      <LabelColumn>false</LabelColumn>
      <Id>1</Id>
      <Labels>
        <Label Id="1" Label="3 Months Ended" />
        <Label Id="2" Label="Mar. 31, 2010" />
      </Labels>
      <CurrencyCode>usd</CurrencyCode>
      <CurrencySymbol>$</CurrencySymbol>
      <FootnoteIndexer />
      <hasSegments>false</hasSegments>
      <hasScenarios>false</hasScenarios>
      <Segments />
      <Scenarios />
      <Units>
        <Unit>
          <UnitID>Shares</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USD</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USDPerShare</UnitID>
          <UnitType>Divide</UnitType>
          <NumeratorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </NumeratorMeasure>
          <DenominatorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </DenominatorMeasure>
          <Scale>0</Scale>
        </Unit>
      </Units>
    </Column>
  </Columns>
  <Rows>
    <Row>
      <Id>2</Id>
      <Label>Commitments and Contingencies</Label>
      <Level>0</Level>
      <ElementName>ecl_CommitmentsAndContingenciesDisclosureAbstract</ElementName>
      <ElementPrefix>ecl</ElementPrefix>
      <IsBaseElement>false</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>string</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>true</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole />
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDefenition>No definition available.</ElementDefenition>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>3</Id>
      <Label>Commitments and Contingencies</Label>
      <Level>1</Level>
      <ElementName>us-gaap_CommitmentsAndContingenciesDisclosureTextBlock</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>string</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsEquityPrevioslyReportedAsRow>false</IsEquityPrevioslyReportedAsRow>
      <IsEquityAdjustmentRow>false</IsEquityAdjustmentRow>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsReverseSign>false</IsReverseSign>
      <PreferredLabelRole>terselabel</PreferredLabelRole>
      <IsEPS>false</IsEPS>
      <FootnoteIndexer />
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <IsRatio>false</IsRatio>
          <DisplayZeroAsNone>false</DisplayZeroAsNone>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText>&lt;table style="font-size:10pt; font-family:'Times New Roman',times,serif;"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;font style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman" size="2"&gt;13.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;u&gt;Commitments and Contingencies&lt;/u&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;font style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;font style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman" size="2"&gt;The company and certain subsidiaries are party to various lawsuits, claims and environmental actions that have arisen in the ordinary course of business. These include antitrust, patent infringement, product liability and wage hour lawsuits, as well as possible obligations to investigate and mitigate the effects on the environment of the disposal or release of certain chemical substances at various sites, such as Superfund sites and other operating or closed facilities. Because litigation is inherently uncertain, and unfavorable rulings or developments could occur, there can be no certainty that the company may not ultimately incur charges in excess of presently recorded liabilities. A future adverse ruling, settlement or unfavorable development could result in future charges that could have a material adverse effect on the company&amp;#146;s results of operations or cash flows in the period in which they are recorded. The company currently believes that such future charge, if any, would not have a material adverse effect on the company&amp;#146;s consolidated financial position.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;font style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;font style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman" size="2"&gt;The company records liabilities where a contingent loss is probable and can be reasonably estimated. If the reasonable estimate of a probable loss is a range, the company records the most probable estimate of the loss or the minimum amount when no amount within the range is a better estimate than any other amount. The company discloses a contingent liability even if the liability is not probable or the amount is not estimable, or both, if there is a reasonable possibility that a material loss may have been incurred.&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;font style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p style="MARGIN: 0in 0in 0pt"&gt;&lt;font style="FONT-SIZE: 10pt; FONT-FAMILY: Times New Roman" size="2"&gt;The company is a defendant in three wage hour lawsuits in the Southern District of New York, one of which has been certified for class-action status. The company has entered into a settlement agreement covering these suits which has been preliminarily approved by the court and is subject to final approval. The company has fully accrued for the settlement amount, which is not material to the company&amp;#146;s consolidated results of operations or financial position.&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
</NonNumbericText>
          <NonNumericTextHeader>13.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Commitments and Contingencies
&amp;nbsp;
The company and certain subsidiaries are party to various</NonNumericTextHeader>
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
          <DisplayDateInUSFormat>false</DisplayDateInUSFormat>
        </Cell>
      </Cells>
      <OriginalInstanceReportColumns />
      <ElementDefenition>Includes disclosure of commitments and contingencies. This element may be used as a single block of text to encapsulate the entire disclosure including data and tables.</ElementDefenition>
      <ElementReferences>Reference 1: http://www.xbrl.org/2003/role/presentationRef
 -Publisher FASB
 -Name FASB Interpretation (FIN)
 -Number 14
 -Paragraph 3

Reference 2: http://www.xbrl.org/2003/role/presentationRef
 -Publisher FASB
 -Name Statement of Financial Accounting Standard (FAS)
 -Number 5
 -Paragraph 9, 10, 11, 12

</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
  </Rows>
  <Footnotes />
  <ComparabilityReport>false</ComparabilityReport>
  <NumberOfCols>1</NumberOfCols>
  <NumberOfRows>2</NumberOfRows>
  <HasScenarios>false</HasScenarios>
  <MonetaryRoundingLevel>UnKnown</MonetaryRoundingLevel>
  <SharesRoundingLevel>UnKnown</SharesRoundingLevel>
  <PerShareRoundingLevel>UnKnown</PerShareRoundingLevel>
  <HasPureData>false</HasPureData>
  <SharesShouldBeRounded>true</SharesShouldBeRounded>
</InstanceReport>
